(节点:11254)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):TypeError:无法读取null的属性“ length”

时间:2019-01-07 20:52:38

标签: node.js firebase firebase-realtime-database google-cloud-messaging

我正在尝试在NodeJS上查询我的Firebase数据库,我有

var admin          = require("firebase-admin");
var serviceAccount = require('/path/app-firebase-adminsdk-bs45c-5a33370488.json');

var firebase       = admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://app.firebaseio.com/"
});

var fcmToken = "";

var ref = firebase.database().ref("users");
ref.once("value")
.then(function(snapshot) {

    var data = snapshot.val();
    console.log(data);

    for(var i=0; i<data.length; i++){

        if(phone == '9786733361'){
            fcmToken = data[i].fcmToken
        }
    }

    console.log(fcmToken);

});

我跑了node database.js

并不断获得

(node:11254) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'length' of null          
(node:11254) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.    

人们将如何进行进一步调试?

1 个答案:

答案 0 :(得分:1)

DataSnapshot 的val()可以为null,表示the object is empty

因此,由于您尝试在data.length / undefined上进行呼叫,因此对null的呼叫将失败。

在这一点上,很难对在线存储的数据进行假设,但是您应该仔细检查once中正在监听的事件确实存在。