javascript - 查询 Firestore 文档中的引用字段

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

我正在尝试编写一个函数,该函数将在文档(在 Firestore“艺术家”集合中)中的数据发生更改后,让 Google Cloud Functions 查找另一个集合(“节目”)中具有指向刚刚更改的文档(在“艺术家”集合中)的引用字段(“艺术家”)。

我似乎不知道如何查询引用字段。我尝试了从使用艺术家文档的 ID 到路径再到完整 URL 的所有方法。但是我在 Google Cloud Function 控制台中收到错误消息:

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

最佳答案

我会像这样直接从参数中获取 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);
      });
});

关于javascript - 查询 Firestore 文档中的引用字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47937202/

相关文章:

java - FCM 没有看到从 Spring 后端应用程序发送的消息

firebase - 创建新的 firestore 文档时,以及当该文档包含保存在云存储中的图像 url 时,如何创建缩略图?

firebase - 在服务器端调用 firestore 时,用户对 cloud firestore 的访问和数据控制

firebase - 为什么 functions.config() 返回 {}?

javascript - 为什么这段 HTML/CSS/jQuery 代码只能在 CodePen 中运行?

javascript - 寻找方法来重构我创建的 div 切换的 jQuery 代码

javascript - 如何使用 Angular 1.5 和 Typescript 在组件 Controller 中获取绑定(bind)值?

java - 如何在不覆盖的情况下将数据推送到 firebase

reactjs - 在 React 中自动配置 Firebase SDK

javascript - 数据绑定(bind)到 flexbox