Existe alguma chance de adicionar um documento à coleção do firestore com id gerado personalizado, não o id gerado pelo mecanismo do firestore?
Existe alguma chance de adicionar um documento à coleção do firestore com id gerado personalizado, não o id gerado pelo mecanismo do firestore?
Respostas:
Para usar um ID personalizado, você precisa usar .set
, em vez de.add
Isso cria um documento com o ID "LA":
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
Isto é retirado dos documentos oficiais aqui
.add()
é equivalente a.doc().set()
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);
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 Angular
Observe que não coloquei id: newId
no objeto set, porque o Firestore por padrão não salva o ID como um campo no documento
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);
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();
}
});
}
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);
"LA"
? Isso não vai funcionar:.doc("LA").add({...})
diga como posso fazer isso.