错误消息有效负载

时间:2018-06-06 06:37:19

标签: javascript firebase firebase-realtime-database

我尝试在Firebase数据库中更新数据时通过Firebase函数发送通知。我猜这是我在有效载荷中引用我的变量的方式,但我无法识别错误。下面是logcat。

Error sending message: { Error: Messaging payload contains an invalid
value for the "data.name" property. Values must be strings.
    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 /user_code/node_modules/firebase-admin/lib/messaging/messaging.js:782:27
    at Array.forEach (native)
    at /user_code/node_modules/firebase-admin/lib/messaging/messaging.js:779:32
    at Array.forEach (native)
    at Messaging.validateMessagingPayload (/user_code/node_modules/firebase-admin/lib/messaging/messaging.js:772:21)
    at /user_code/node_modules/firebase-admin/lib/messaging/messaging.js:609:37
    errorInfo: 
    { code: 'messaging/invalid-payload',
     message: 'Messaging payload contains an invalid value for the "data.name" property. Values must be strings.' },
    codePrefix: 'messaging' }

以下是我的JS代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();

exports.sendNotification = functions.database.ref('/Lecture_Materials/{MIS}/{MISId}/name')
    .onWrite((change, context) => {

        // Grab the current value of what was written to the Realtime Database.
        var eventSnapshot = change.after.val();
        var str1 = "Lecture note uploaded is: ";
        var str = str1.concat(eventSnapshot.name);
        console.log(str);

        var topic = "Management.Information.System";
        var payload = {
            data: {
                name: eventSnapshot,
            }
        };

        // Send a message to devices subscribed to the provided topic.
        return admin.messaging().sendToTopic(topic, payload)
            .then(function(response) {
                // See the MessagingTopicResponse reference documentation for the
                // contents of response.
                console.log("Successfully sent message:", response);
                return;
            })
            .catch(function(error) {
                console.log("Error sending message:", error);
            });
    });

有人帮帮我吗?我的错误是什么?

1 个答案:

答案 0 :(得分:0)

它应该是这样的

 var payload = {
          data: {
            name: eventSnapshot.name,
          }

我不确定这一点,但我认为你不能将对象作为有效载荷中的值传递。