Як додати документ з користувацьким ідентифікатором у firestore


96

Чи є шанс додати документ до колекції Firestore із спеціально згенерованим ідентифікатором, а не ідентифікатором, створеним механізмом Firestore?

Відповіді:


200

Щоб використовувати власний ідентифікатор, вам потрібно використовувати .set, а не.add

Це створює документ з ідентифікатором "LA":

db.collection("cities").doc("LA").set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})

Це взято з офіційних документів тут


1
Що робити, якщо я хочу додати до документа "LA"? Це не буде працювати: .doc("LA").add({...})скажіть, будь ласка, як я можу це зробити.
Shubham Kushwah

2
.add()еквівалентно.doc().set()
roshnet


7

Щоб розширити прийняту відповідь, якщо ви коли-небудь хотіли, щоб ваш клієнт згенерував випадковий ідентифікатор документа перед натисканням на Firestore (припускаючи, що та сама createId()функція існує і поза AngularFire2)

const newId = db.createId();
db.collection("cities").doc(newId).set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})

Це корисно для встановлення ідентифікатора як довідкового поля в іншому документі, навіть до того, як Firestore щось збереже. Якщо вам не потрібно використовувати збережений об’єкт відразу, це прискорює процес, не змушуючи чекати ID. Тепер set()виклик асинхронний з конвеєра, який ви можете використовувати в Angular

Зверніть увагу, що я не вставив id: newIdоб’єкт set, оскільки Firestore за замовчуванням не зберігає ідентифікатор як поле в документі


2

Ви можете зробити це таким чином

// Inject AngularFirestore as dependency 
private angularFireStore: AngularFirestore // from from 'angularfire2/firestore'

// set user object to be added into the document
let user = {
  id: this.angularFireStore.createId(),
  name: 'new user'
  ...
}

// Then, finally add the created object to the firebase document
angularFireStore.collection('users').doc(user.id).set(user);

1

db.collection ("користувачі"). документ (mAuth.getUid ()). set (користувач)

Тут ім’я колекції, "users"а ім’я документа - ім’я користувачаUID

Тут вам потрібно використовувати setнеadd

private void storeData(String name, String email, String phone) {

    // Create a new user with a first and last name
    Map<String, Object> user = new HashMap<>();
    user.put("name", name);
    user.put("email", email);
    user.put("phone", phone);

    // Add a new document with a generated ID
    db.collection("users").document(mAuth.getUid()).set(user)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Toasty.success(context,"Register sucess",Toast.LENGTH_SHORT).show();
        }
    });
}

1

Створіть новий документ з ідентифікатором

  createDocumentWithId<T>(ref: string, document: T, docId: string) {
    return this.afs.collection(ref).doc<T>(docId).set(document);
  }

ПРИКЛАД: цей приклад з електронною поштою як ідентифікатором документа

this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.