web-dev-qa-db-ja.com

カスタムIDのドキュメントをFirestoreに追加する方法(Angular)

Firestoreエンジンによって生成されたIDではなく、カスタム生成されたIDを使用してドキュメントをfirestoreコレクションに追加する機会はありますか。

回答ありがとうございます。

34
Harvey Dent

カスタムIDを使用するには、.setではなく.addを使用する必要があります

これにより、IDが「LA」のドキュメントが作成されます。

db.collection("cities").doc("LA").set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})

これは公式ドキュメントから取得されます here

76
Finlay Percy
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);
7
Papa Kojo

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オブジェクトに入れなかったことに注意してください。

3

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);
1
sun sreng

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();
        }
    });
}
1
Deven Chavda