web-dev-qa-db-ja.com

documentSnapshotからCloud Firestoreドキュメント参照を取得する

問題

クエリからドキュメント参照を取得しようとしています。私のコードはundefinedを返します。 documentSnapshot.refのさまざまな部分を抽出することでパスを取得できますが、これは簡単ではありません。

返したいのは、コレクションを指定して.updateを使用しなくても、後でドキュメントをdocumentSnapshot.idに使用できる参照です。

pathプロパティのドキュメントは here です

私のコード

const db = admin.firestore();

return db.collection('myCollection').get().then(querySnapshot => {
  querySnapshot.forEach(documentSnapshot => {
    console.log(`documentReference.id   = ${documentSnapshot.id}`);
    console.log(`documentReference.path = ${documentSnapshot.path}`);
    // console.log(`documentReference.ref = ${JSON.stringify(documentSnapshot.ref)}`);
  });
});

出力

documentReference.id   = Jez7R1GAHiR9nbjS3CQ6
documentReference.path = undefined
documentReference.id   = skMmxxUIFXPyVa7Ic7Yp
documentReference.path = undefined
18
Jason Berryman

コードでは、documentSnapshotはタイプ DocumentSnapshot のオブジェクトです。 DocumentReference タイプのオブジェクトであると想定しているようです。参照の目的は、ドキュメントを見つけることです。スナップショットの目的は、クエリが実行された後にドキュメントのコンテンツを受信することです。これらはまったく同じものではありません。 DocumentSnapshotにはpathプロパティがありません。

DocumentSnapshotでフェッチされたドキュメントのDocumentReferenceが必要な場合は、スナップショットで ref を使用できます。次に、refのパスプロパティを取得できます。

documentSnapshot.ref.path
22
Doug Stevenson