Javascript Can';当朋友通过android Firebase功能中的nodejs向另一个用户请求一个用户时,不会收到任何通知
我正在尝试为我的聊天应用程序创建通知简单AI,当我请求从一个用户id到另一个用户id时,它不会显示任何到其他用户id的通知,在功能中,错误显示为:Javascript Can';当朋友通过android Firebase功能中的nodejs向另一个用户请求一个用户时,不会收到任何通知,javascript,node.js,firebase,firebase-realtime-database,firebase-authentication,Javascript,Node.js,Firebase,Firebase Realtime Database,Firebase Authentication,我正在尝试为我的聊天应用程序创建通知简单AI,当我请求从一个用户id到另一个用户id时,它不会显示任何到其他用户id的通知,在功能中,错误显示为: Error: Registration token(s) provided to sendToDevice() must be a non-empty string or a non-empty array. at FirebaseMessagingError.Error (native) at FirebaseMessagingEr
Error: Registration token(s) provided to sendToDevice() must be a non-empty string or a non-empty array.
at FirebaseMessagingError.Error (native)
at FirebaseMessagingError.FirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:39:28)
at FirebaseMessagingError.PrefixedFirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:85:28)
at new FirebaseMessagingError (/user_code/node_modules/firebase-admin/lib/utils/error.js:241:16)
at Messaging.validateRegistrationTokensType (/user_code/node_modules/firebase-admin/lib/messaging/messaging.js:589:19)
at Messaging.sendToDevice (/user_code/node_modules/firebase-admin/lib/messaging/messaging.js:210:14)
at Promise.all.then.result (/user_code/index.js:92:32)
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
我不是一个很好的nodejs编码员,我在谷歌的一些教程中提到过,但它对我不起作用。有人能帮我解释为什么会显示这个错误以及如何修复它吗。此外,我没有任何形式的通知一个到另一个用户id。
这是我的nodejs代码:
index.js:
'use strict'
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendNotification = functions.database.ref('/notifications/{user_id}/{notification_id}').onWrite(event => {
const user_id = event.params.user_id;
const notification_id = event.params.notification_id;
console.log('We have a notification from : ', user_id);
if(!event.data.val()){
return console.log('A Notification has been deleted from the database : ', notification_id);
}
const fromUser = admin.database().ref(`/notifications/${user_id}/${notification_id}`).once('value');
return fromUser.then(fromUserResult => {
const from_user_id = fromUserResult.val().from;
console.log('You have new notification from : ', from_user_id);
const userQuery = admin.database().ref(`Users/${from_user_id}/name`).once('value');
const deviceToken = admin.database().ref(`/Users/${user_id}/device_token`).once('value');
return Promise.all([userQuery, deviceToken]).then(result => {
const userName = result[0].val();
const token_id = result[1].val();
const payload = {
notification: {
title : "New Friend Request",
body: `${userName} has sent you request`,
icon: "default",
click_action : "com.rotaractnepalapp.rotraconversation_TARGET_NOTIFICATION"
},
data : {
from_user_id : from_user_id
}
};
return admin.messaging().sendToDevice(token_id, payload).then(response => {
return console.log('This was the notification Feature');
});
});
});
});
这是因为:
const userName = result[0].val();
const token_id = result[1].val();
上面的一个是空的,您需要添加
console.log()
来检查哪个是空的。另外,您需要在ref()
中检查您的数据库和路径数据库,以确保有一个令牌。先生,您能举个例子吗?我不明白如何检查console.log()以上两个常量,ref()是正确的,有一个令牌对不起,英语不好。我是一个初学者,这就是为什么我要问您sirconsole.log(“user is”,userName);日志(“token is”,token\u id);thx但当我部署firebase时,我收到32:12警告避免嵌套承诺承诺/不嵌套52:14警告避免嵌套承诺承诺/不嵌套警告如何移除它,先生,这对我不起作用:(我发送请求时没有通知