Czy jest szansa na dodanie dokumentu do kolekcji Firestore z niestandardowym identyfikatorem wygenerowanym, a nie wygenerowanym przez silnik Firestore?
javascript
firebase
google-cloud-firestore
Harvey Dent
źródło
źródło
"LA"
? To nie zadziała:.doc("LA").add({...})
powiedz, jak mam to zrobić..add()
jest odpowiednikiem.doc().set()
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);
źródło
Aby rozwinąć zaakceptowaną odpowiedź, jeśli kiedykolwiek chciałeś, aby Twój klient wygenerował losowy identyfikator dla dokumentu przed wysłaniem do Firestore (zakładając, że ta sama
createId()
funkcja istnieje poza AngularFire2)const newId = db.createId(); db.collection("cities").doc(newId).set({ name: "Los Angeles", state: "CA", country: "USA" })
Jest to przydatne do ustawiania identyfikatora jako pola odniesienia w innym dokumencie, nawet zanim Firestore cokolwiek zapisze. Jeśli nie musisz od razu używać zapisanego obiektu, przyspiesza to proces, nie zmuszając Cię do czekania na identyfikator.
set()
Połączenie jest teraz asynchroniczny z rury może być używanie w kątowymZauważ, że nie wstawiłem
id: newId
obiektu set, ponieważ domyślnie Firestore nie zapisuje ID jako pola w dokumencieźródło
Możesz to zrobić w ten sposób
// 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);
źródło
db.collection ("użytkownicy"). dokument (mAuth.getUid ()). set (użytkownik)
Tutaj nazwa kolekcji to,
"users"
a nazwa dokumentu to użytkownikUID
Tu u trzeba używać
set
nieadd
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(); } }); }
źródło
Utwórz nowy dokument z identyfikatorem
createDocumentWithId<T>(ref: string, document: T, docId: string) { return this.afs.collection(ref).doc<T>(docId).set(document); }
EX: ten przykład z e-mailem jako identyfikatorem dokumentu
this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
źródło