我正在尝试在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.
人们将如何进行进一步调试?
答案 0 :(得分:1)
DataSnapshot 的val()可以为null,表示the object is empty。
因此,由于您尝试在data.length
/ undefined
上进行呼叫,因此对null
的呼叫将失败。
在这一点上,很难对在线存储的数据进行假设,但是您应该仔细检查once
中正在监听的事件确实存在。