Firestore 엔진에서 생성 한 ID가 아닌 사용자 정의 생성 ID로 Firestore 컬렉션에 문서를 추가 할 기회가 있습니까?
답변
맞춤 ID를 사용하려면 .set
대신 을 사용해야합니다 ..add
이렇게하면 ID가 “LA”인 문서가 생성됩니다.
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
이것은 공식 문서 에서 가져온 것입니다.
답변
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);
답변
허용되는 답변을 확장하기 위해 클라이언트가 Firestore로 푸시하기 전에 문서에 대해 임의의 ID를 생성하도록하려는 경우 ( createId()
AngularFire2 외부에 동일한 함수가 있다고 가정 )
const newId = db.createId();
db.collection("cities").doc(newId).set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
이것은 Firestore가 아무것도 저장하기 전에도 ID를 다른 문서의 참조 필드로 설정하는 데 유용합니다. 저장된 개체를 즉시 사용할 필요가없는 경우 ID를 기다리지 않아도되므로 프로세스 속도가 빨라집니다. set()
전화는 각도에 이용 될 수있는 파이프에서 지금 비동기
공지 사항 난 넣지 않았다 id: newId
기본적으로 경우 FireStore는 ID 저장하지 않기 때문에 문서에 필드로, 설정된 객체
답변
이런 식으로 할 수 있습니다
// 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 ( “users”). document (mAuth.getUid ()). set (user)
여기에서 컬렉션의 이름은 "users"
이고 문서 이름은 사용자의UID
여기에서 사용할 필요가 set
없습니다.add
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();
}
});
}
답변
ID로 새 문서 만들기
createDocumentWithId<T>(ref: string, document: T, docId: string) {
return this.afs.collection(ref).doc<T>(docId).set(document);
}
예 : 이메일을 문서의 ID로 사용하는이 예
this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
답변
