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


104

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

回答:


215

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

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

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

これはここの公式ドキュメントから取られています


1
ドキュメントに追加したい場合はどうすればよい"LA"ですか?これは機能しません:.doc("LA").add({...})どうすればそれができるか教えてください。
ShubhamKushwah19年1

3
.add()等価である.doc().set()
roshnet

私たちは、その後、カスタマーIDを追加したい場合は、私たちは.DOCを使用する必要があります()の代わりに追加のセット()()。
ビラルYaqoob


7

受け入れられた回答を拡張するために、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: newIdFirestoreはデフォルトでIDをドキュメントのフィールドとして保存しないため、setオブジェクトを入力しなかったことに注意してください。


3

あなたはこのようにそれを行うことができます

// 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);

1

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

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);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.