Firestoreエンジンによって生成されたIDではなく、カスタム生成されたIDを使用してドキュメントをfirestoreコレクションに追加する機会はありますか。
回答ありがとうございます。
カスタムIDを使用するには、.set
ではなく.add
を使用する必要があります
これにより、IDが「LA」のドキュメントが作成されます。
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
これは公式ドキュメントから取得されます here
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()
呼び出しは、Angularで使用しているパイプから非同期になりました。
FirestoreはデフォルトではドキュメントのフィールドとしてIDを保存しないため、id: newId
をsetオブジェクトに入れなかったことに注意してください。
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);
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();
}
});
}