我的索引中有此代码.js 当我创建数据到云Firestore时触发,其他用户会收到通知。 但这不是工作
const functions = require('firebase-functions'(; const admin = require('Firebase-admin'(;
admin.initializeApp((;
const db = admin.firestore();
const fcm = admin.messaging();
exports.sendNotification = functions.firestore
.document('donorRequests').
onCreate(async snapshot => {
const req = snapshot.data();
var user = db.collection('account/{uid}').get()
if((db.collection('accounts/{uid}/isVolunteer').get()===true)
&&(db.collection('account/{uid}/bloodType').get()===req.bloodType)
&&(db.collection('account/{uid}/rhesus').get()===req.rhesus)
&&(db.collection('account/latestDonor').get()-Date.now()>54)){
const payload = {
"notification":{
title: 'Hai Pahlawan!',
body: 'Seseorang butuh kamu, yuk kita bantu :)',
clickAction: 'FLUTTER_NOTIFICATION_CLICK'
}
};
return fcm.sendAll(payload);
}
});
您的 Firestore 云函数触发器有很多错误。
首先,在你对collection
的使用中,它应该只保存一个collection_name作为字符串,并且doc
在规定的集合之后包含一些文档路径。例如,要从accounts
集合中获取带有uid1
的文档,它是这样完成
的方法1
db.collection("accounts").doc("uid1").get()
方法2
db.doc("accounts/uid1").get()
其次,这两个方法访问一个文档,因此它们将返回一个解析为文档中DocumentSnapshot
的Promise
,并且您必须在它们前面添加一个await
关键字,例如
const record = await db.collection("accounts").doc("uid1").get();