Firebase和Firestore的云功能入门

Firebase和Firestore的云功能入门,firebase,google-cloud-firestore,google-cloud-functions,Firebase,Google Cloud Firestore,Google Cloud Functions,有谁能给我指点,让Firestore使用云函数吗 我试图遵循以下文档: 使用firebase部署--仅函数:\u onFirestoreWrite\u通知 我得到消息:HTTP错误:400,请求有错误 const functions = require('firebase-functions'); const admin = require('firebase-admin'); const Firestore = require('@google-cloud/firestore'); cons

有谁能给我指点,让Firestore使用云函数吗

我试图遵循以下文档:

使用
firebase部署--仅函数:\u onFirestoreWrite\u通知

我得到消息:HTTP错误:400,请求有错误

const functions = require('firebase-functions');
const admin = require('firebase-admin');

const Firestore = require('@google-cloud/firestore');
const firestore = new Firestore();

admin.initializeApp();

const db = admin.firestore();

exports._onFirestoreWrite_notifications = functions.firestore
  .document('_notifications')
  .onWrite((change, context) => {

  //..

  });
下面更新OP的评论:显然,在云函数名中使用下划线会引起问题

使用
onWrite()
触发器,您将为特定文档的任何更改触发一个事件。Firestore中的文档存储在集合中,因此您需要将文档的完整路径传递给
document()
方法,如下所示:

exports.onFirestoreWriteNotifications = functions.firestore
  .document('collection/_notifications')  //Note the addition of the collection
  .onWrite()

此外,请注意,您不需要这样做

const Firestore = require('@google-cloud/firestore');
const firestore = new Firestore();
return admin.firestore().collection('_hello').add({
  text: "itworks",
  from: "onWrite"
});
//!!! Note the return (and the use of admin.firestore() )
因为,在您的云功能中,您将使用与Firestore交互

这样做

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
如解释和(Node.js选项卡)所示,这已经足够了

然后您将使用
admin.Firestore()
调用Firestore数据库,例如,
admin.Firestore().collection(“\u hello”).add({…})


此外,请注意,您必须返回异步任务返回的承诺

如果我参考您的初始代码(编辑前)

你需要做什么

const Firestore = require('@google-cloud/firestore');
const firestore = new Firestore();
return admin.firestore().collection('_hello').add({
  text: "itworks",
  from: "onWrite"
});
//!!! Note the return (and the use of admin.firestore() )

这是一个重要的观点,在Firebase视频系列中关于“JavaScript承诺”的三个视频中有很好的解释:

你的问题在哪里?在我看来,下一步将是部署,请参阅Firebase部署错误,因此我想我在“导出”之前遗漏了一些内容。这允许Firestore运行。请使用您正在运行的命令和“Firebase部署…”中相应的错误消息更新您的问题。您好,感谢您选择了它,但它的functions.firestore不起作用,我在发布之前尝试了不同的组合,但无法使其工作。现在我看到了问题:您需要使用父集合定义您的文档,如exports.myFunctionName=functions.firestore.document('collection\u name/\u notifications')您好,发现问题。。。显然,下划线是firebase函数中出现问题的原因,因此如果我将函数名“\u onFirestoreWrite\u notifications”重命名为“onFirestoreWriteNotifications”,那么我的函数名“\u onFirestoreWrite\u notifications”就可以工作了。很高兴听到@PHILLBOOTH!但我仍然认为您需要将集合添加到文档路径中,如答案.Agreed.document(“\u notifications/{userID}”)中所述