Firebase Cloud Function trigger Cloud Messenger



我的索引中有此代码.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()

其次,这两个方法访问一个文档,因此它们将返回一个解析为文档中DocumentSnapshotPromise,并且您必须在它们前面添加一个await关键字,例如

const record = await db.collection("accounts").doc("uid1").get();

相关内容

  • 没有找到相关文章

最新更新