Existe alguma chance de adicionar um documento à coleção do firestore com id gerado personalizado, não o id gerado pelo mecanismo do firestore?
javascript
firebase
google-cloud-firestore
Harvey Dent
fonte
fonte
"LA"
? Isso não vai funcionar:.doc("LA").add({...})
diga como posso fazer isso..add()
é equivalente a.doc().set()
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);
fonte
Para expandir a resposta aceita, se você quiser que seu cliente gere um ID aleatório para o documento antes de enviar para o Firestore (presumindo que a mesma
createId()
função exista fora do AngularFire2)const newId = db.createId(); db.collection("cities").doc(newId).set({ name: "Los Angeles", state: "CA", country: "USA" })
Isso é útil para definir o ID como um campo de referência em outro documento, mesmo antes de o Firestore salvar qualquer coisa. Se você não precisar usar o objeto salvo imediatamente, isso acelera o processo, não fazendo com que você espere pelo ID. A
set()
chamada agora é assíncrona do tubo que você pode estar usando no AngularObserve que não coloquei
id: newId
no objeto set, porque o Firestore por padrão não salva o ID como um campo no documentofonte
Você pode fazer assim
// 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);
fonte
db.collection ("usuários"). document (mAuth.getUid ()). set (usuário)
Aqui, o nome da coleção é
"users"
e o nome do documento é o nome do usuárioUID
Aqui u precisa usar
set
nãoadd
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(); } }); }
fonte
Criar novo documento com ID
createDocumentWithId<T>(ref: string, document: T, docId: string) { return this.afs.collection(ref).doc<T>(docId).set(document); }
EX: este exemplo com leva e-mail como ID do documento
this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
fonte