Есть ли шанс добавить документ в коллекцию firestore с пользовательским сгенерированным идентификатором, а не с идентификатором, сгенерированным движком firestore?
Есть ли шанс добавить документ в коллекцию firestore с пользовательским сгенерированным идентификатором, а не с идентификатором, сгенерированным движком firestore?
Ответы:
Чтобы использовать собственный идентификатор, вам нужно использовать .set
, а не.add
Будет создан документ с идентификатором «LA»:
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
Это взято из официальных документов здесь
.add()
эквивалентно.doc().set()
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 что-либо сохранит. Если вам не нужно сразу использовать сохраненный объект, это ускоряет процесс, не заставляя вас ждать идентификатора. set()
Вызов теперь асинхронно из трубы можно использовать в угловому
Обратите внимание, что я не вставил id: newId
заданный объект, потому что 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 ("пользователи"). document (mAuth.getUid ()). set (пользователь)
Здесь имя коллекции, "users"
а имя документа - пользовательUID
Здесь вам нужно использовать set
notadd
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);
}
EX: этот пример с использованием электронной почты в качестве идентификатора документа
this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
"LA"
? Это не сработает:.doc("LA").add({...})
скажите, пожалуйста, как я могу это сделать.