Чи є шанс додати документ до колекції Firestore із спеціально згенерованим ідентифікатором, а не ідентифікатором, створеним механізмом Firestore?
Чи є шанс додати документ до колекції Firestore із спеціально згенерованим ідентифікатором, а не ідентифікатором, створеним механізмом Firestore?
Відповіді:
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);
Щоб розширити прийняту відповідь, якщо ви коли-небудь хотіли, щоб ваш клієнт згенерував випадковий ідентифікатор документа перед натисканням на 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 за замовчуванням не зберігає ідентифікатор як поле в документі
Ви можете зробити це таким чином
// 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);
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();
}
});
}
Створіть новий документ з ідентифікатором
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);
"LA"
? Це не буде працювати:.doc("LA").add({...})
скажіть, будь ласка, як я можу це зробити.