Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';当朋友通过android Firebase功能中的nodejs向另一个用户请求一个用户时,不会收到任何通知_Javascript_Node.js_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Javascript Can';当朋友通过android Firebase功能中的nodejs向另一个用户请求一个用户时,不会收到任何通知

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

我正在尝试为我的聊天应用程序创建通知简单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 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警告避免嵌套承诺承诺/不嵌套警告如何移除它,先生,这对我不起作用:(我发送请求时没有通知