任何人都可以给我一些指导,让Firestore使用Cloud Functions。
我正在尝试遵循此处的文档:https://firebase.google.com/docs/firestore/extend-with-functions
使用firebase deploy --only functions:_onFirestoreWrite_notifications
我收到消息: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) => {
//..
});
答案 0 :(得分:1)
根据以下OP的评论进行更新:显然,在Cloud Function名称中使用下划线会引起问题。
使用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();
因为在Cloud Functions中,您将使用Admin SDK for Node.js与Firestore进行交互。
这样做
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
然后,您将使用admin.firestore()
调用Firestore数据库,例如admin.firestore().collection('_hello').add({...})
此外,请注意,您必须返回异步任务返回的Promises。
(如果在编辑之前)我参考了您的初始代码
exports._onFirestoreWrite_notifications = functions.firestore
.document('collection/_notifications')
.onWrite((change, context) => {
db.firestore//.collection('_hello').add({
text: "itworks",
from: "onWrite"
});
});
您需要做
return admin.firestore().collection('_hello').add({
text: "itworks",
from: "onWrite"
});
//!!! Note the return (and the use of admin.firestore() )
这很重要,并且在Firebase视频系列的三个有关“ JavaScript承诺”的视频中得到了很好的解释:https://firebase.google.com/docs/functions/video-series/