创建新文档时触发功能

时间:2019-07-09 06:16:35

标签: node.js google-cloud-firestore google-cloud-functions

我已经尝试了使用Cloud Functions的增量计数器示例(https://github.com/firebase/functions-samples/tree/master/child-count),该示例引用的是实时数据库,而不是Firebase Firestore。

我正在跟踪firestore文档,并尝试了一些更改。仍然面临问题,无法为Firestore新文档运行此代码。我是第一次编写云函数,并且不确定我是否写的正确。

   exports.countlikechange = functions.database.ref('/posts/{postid}/likes/{likeid}').onWrite(
async (change) => {
  const collectionRef = change.after.ref.parent;
  const countRef = collectionRef.parent.child('likes_count');

  let increment;
  if (change.after.exists() && !change.before.exists()) {
    increment = 1;
  } else if (!change.after.exists() && change.before.exists()) {
    increment = -1;
  } else {
    return null;
  }

  // Return the promise from countRef.transaction() so our function
  // waits for this async event to complete before it exits.
  await countRef.transaction((current) => {
    return (current || 0) + increment;
  });
  console.log('Counter updated.');
  return null;
});

我想更新父文档中的计数。

1 个答案:

答案 0 :(得分:1)

您应该查看documentation for Firestore triggers。您正在编写的是实时数据库触发器,因为函数声明为functions.database。您将改为使用functions.firestore。您还将使用Realtime Database API而不是Firestore API。使用Firestore的最终解决方案看上去将与您现在拥有的解决方案完全不同。