typescript - 在 Firebase 云功能中发送推送通知时出错
问题描述
我正在尝试使用 firebase 云功能创建推送通知。以下是我的代码:
const admin = firebase
exports.sendNewTripNotification = functions.firestore
.document('notifications/{notificationId}')
.onWrite(async (event) => {
console.log("event: ", event)
const key = "cK0e5ZRAVRUAlx8hXHkNkXp7mj43"
const ref = admin.database().ref(`users/${key}/deviceToken`);
console.log("ref: ", ref)
const deviceToken = admin.database().ref(`/users/${key}/deviceToken`).once('value');
return deviceToken.then(result => {
const token_id = result.val();
console.log("token_id", token_id)
const payload = {
notification: {
title: "Friend Request",
body: "You just got a new friend request",
icon: "default"
}
};
console.log("payload", payload)
return admin.messaging().sendToDevice(token_id, payload).then(Response => {
console.log('this is the notification',Response)
});
});
})
我收到以下错误:
错误:提供给 sendToDevice() 的注册令牌必须是非空字符串或非空数组。在 FirebaseMessagingError.FirebaseError [作为构造函数] (/srv/node_modules/firebase-admin/lib/utils/error.js:42:28) 在 FirebaseMessagingError.PrefixedFirebaseError [作为构造函数] (/srv/node_modules/firebase-admin/lib/实用程序/error.js:88:28)
我确实咨询了以下两个链接,但没有得到任何帮助。我在这里做错什么了吗?
解决方案
您将 async/await 与 混合使用,then()
不建议这样做。以下应该可以解决问题(未经测试):
exports.sendNewTripNotification = functions.firestore
.document('notifications/{notificationId}')
.onWrite(async (event) => {
console.log("event: ", event)
const key = "cK0e5ZRAVRUAlx8hXHkNkXp7mj43"
const ref = admin.database().ref(`users/${key}/deviceToken`);
console.log("ref: ", ref)
const deviceToken = await ref.once('value');
const token_id = deviceToken.val();
console.log("token_id", token_id)
const payload = {
notification: {
title: "Friend Request",
body: "You just got a new friend request",
icon: "default"
}
};
const messagingDevicesResponse = await admin.messaging().sendToDevice(token_id, payload);
console.log('this is the notification', messagingDevicesResponse)
return null;
})
推荐阅读
- mysql - 如何在单个sql中连续连接几个表
- mongodb - 将数据从 couchbase 本地复制到 AWS documentdb
- maple - 需要一个 Maple 程序
- python-3.x - ModuleNotFoundError: No module named : xml_parser & augments
- java - Recyclerview 不显示项目?
- javascript - React Native,成功设置状态但想同时保存在 asyncStorage
- python - 带有少量变量的散点矩阵,目标在 Y 轴
- python - matplotlib如何遍历子图中的每个轴
- javascript - 使用ajax删除laravel中的数据
- python - 输出:\ntorch-1.1.0-cp27-cp27mu-linux_x86_64.whl 不是该平台支持的轮子- Pytorch /cloud 功能