Firestore koleksiyonuna firestore motoru tarafından oluşturulan kimliğe değil, özel oluşturulmuş kimliğe sahip bir belge ekleme şansı var mı?
Firestore koleksiyonuna firestore motoru tarafından oluşturulan kimliğe değil, özel oluşturulmuş kimliğe sahip bir belge ekleme şansı var mı?
Yanıtlar:
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);
Kabul edilen yanıtı genişletmek için, müşterinizin Firestore'a göndermeden önce belge için rastgele bir kimlik oluşturmasını istiyorsanız (aynı createId()
işlevin AngularFire2 dışında var olduğunu varsayarak )
const newId = db.createId();
db.collection("cities").doc(newId).set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
Bu, Firestore herhangi bir şey kaydetmeden önce kimliği başka bir belgede referans alanı olarak ayarlamak için kullanışlıdır. Kaydedilen nesneyi hemen kullanmanız gerekmiyorsa, bu sizi kimliği bekletmeden süreci hızlandırır. set()
Çağrı Eğer açısal içinde kullanıyor olabilirsiniz borusundan artık eşzamansızsa
id: newId
Ayarlanan nesneyi koymadığıma dikkat edin çünkü Firestore varsayılan olarak kimliği dokümanda bir alan olarak kaydetmez
Bu şekilde yapabilirsin
// 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 ("kullanıcılar"). belge (mAuth.getUid ()). set (kullanıcı)
Burada, koleksiyonun "users"
adı ve belge adı kullanıcınınUID
Burada kullanman set
gerekmiyoradd
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();
}
});
}
Kimliği olan yeni Belge oluştur
createDocumentWithId<T>(ref: string, document: T, docId: string) {
return this.afs.collection(ref).doc<T>(docId).set(document);
}
EX: bu örnek e-postayı belge için kimlik olarak alır
this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
"LA"
? Bu işe yaramaz:.doc("LA").add({...})
Lütfen bunu nasıl yapabilirim söyleyin.