查询Firestore文档中的引用字段

时间:2017-12-22 07:03:58

标签: javascript firebase google-cloud-functions google-cloud-firestore

我正在尝试编写一个函数,在文档中的数据(在Firestore'艺术家的集合中)更改之后,Google Cloud Functions将找到另一个集合中的所有文档('shows')引用字段(“艺术家”)指向刚刚更改的文档(在“艺术家”集合中)。

我似乎无法弄清楚如何查询引用字段。我尝试了从使用艺术家文档的ID到路径到完整URL的所有内容。但我在Google云端功能控制台中收到错误:

Error getting documents Error: Cannot encode type ([object Undefined]) to a Firestore Value

以下是我的代码示例:

exports.updateReferenceArtistFields = functions.firestore
  .document('artists/{artistId}').onWrite(event => {
  var artistRef = event.data.data();
  var artistId = artistRef.id;
  var ShowsRef = firestore.collection('shows');
  var query = ShowsRef.where('artist', '==', artistId).get()
      .then(snapshot => {
          snapshot.forEach(doc => {
              console.log(doc.id, '=>', doc.data());
          });
      })
      .catch(err => {
          console.log('Error getting documents', err);
      });
});

1 个答案:

答案 0 :(得分:0)

我会像这样直接从params获得artistId:

var artistId = event.params.artistId;

示例:

exports.updateReferenceArtistFields = functions.firestore
  .document('artists/{artistId}').onWrite(event => {
  var artistId = event.params.artistId;
  var showsRef = firestore.collection('shows');
  var query = showsRef.where('artist', '==', artistId).get()
      .then(snapshot => {
          snapshot.forEach(doc => {
              console.log(doc.id, '=>', doc.data());
          });
      })
      .catch(err => {
          console.log('Error getting documents', err);
      });
});