嗨,这是我也想用来从一个应用程序向另一个android应用程序发送好友请求通知的代码。
但是我正在返回函数undefined
,预期的承诺或价值
功能控制台中出现错误,并且我没有获得令牌值。
我的代码在下面...
'use-strict'
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();
exports.sendNotification = functions.firestore
.document("users/{user_id}/notifications/{notification_id}")
.onWrite((change,context)=>{
const user_id = context.params.user_id;
console.log("We have a notification to send to", user_id);
var ref = db.collection('device_token').doc(user_id);
var getDoc = cityRef.get().then(doc=>{
if (!doc.exists) {
return console.log('No such document!');
} else {
console.log('Document data:', doc.data());
const payload = {
notification: {
title: "Text.",
body: "You have a new Friend Request!",
icon: "default"
}
}
return admin.messaging().sendToDevice(tockenDoc, payload).then(response=>{
return console.log("Notification sent : success");
});
}
}).catch(err=>{
console.log('Error getting document', err);
});
});
答案 0 :(得分:1)
onWrite
创建一个Promise,该Promise存储到getDoc
,
您可以返回getDoc
。
答案 1 :(得分:0)
由后台操作(例如您的情况下对Firestore的写入)触发并执行异步操作(例如您的代码中对sendToDevice()
的写入)触发的函数需要返回一个值或一个承诺在完成时明确说明。您没有返回任何内容,因此Cloud Functions抱怨说它不知道代码何时完成。
由于您没有在任何地方使用getDoc
变量,因此最好将其返回。里面的return admin.messaging().sendToDevice()
会冒出气泡,并向Cloud Functions提供所需的信息,以使其知道保持功能容器存活的时间。
return cityRef.get().then(doc=>{
...
}).catch(err=>{
...
});