来自 Node 的 Firebase:回调没有响应?
Firebase from Node: no response from callback?
我正在尝试让 Hello World 在这里工作——只需让我的 Node 脚本与 Firebase 对话。我制作了一个我认为应该读取 "stories" 集合的脚本,但我没有收到 Firebase 的回复。我确定我错过了一些非常基本的东西。请帮忙!
var db = admin.database();
var ref = db.ref("stories");
ref.on("value", function(snapshot) {
console.log(snapshot.val());
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
console.log('exiting');
...但我得到的是:
p:0: Browser went online.
p:0: Listen called for /stories default
exiting
p:0: Making a connection attempt
p:0: Auth token refreshed
getToken() completed. Creating connection.
c:0:0: Connection created
c:0:0:0 Websocket connecting to wss://*****.firebaseio.com/.ws?v=5
我想出了一个等待更长时间的方法,得到了这个:
p:0: Browser went online.
p:0: Listen called for /stories default
exiting
p:0: Making a connection attempt
p:0: Auth token refreshed
getToken() completed. Creating connection.
c:0:0: Connection created
c:0:0:0 Websocket connecting to wss://*****.firebaseio.com/.ws?v=5
c:0:0: Closing unhealthy connection after timeout.
c:0:0: Closing realtime connection.
c:0:0: Shutting down all connections
c:0:0:0 WebSocket is being closed
p:0: data client disconnected
p:0: Trying to reconnect in 0ms
0: onDisconnectEvents
p:0: Making a connection attempt
getToken() completed. Creating connection.
c:0:1: Connection created
c:0:1:0 Websocket connecting to wss://*****.firebaseio.com/.ws?v=5
c:0:0:0 Websocket connection was disconnected.
我做错了什么?
真正的 once()
而不是 on()
。 once()
只需查询一次,return 就是一个承诺。 on()
建立一个 运行 的侦听器,直到您将其删除,并且它不是 return 承诺。
ref.once('value')
.then(snapshot => {
console.log(snapshot.val());
})
.catch(error => {
console.error(error);
});
您谈到了 collection
,所以我认为您正在使用 Cloud Firestore,而不是实时数据库。
所以代码应该是:
const db = admin.firestore();
db.collection('stories').get()
.then((snapshot) => {
snapshot.forEach((doc) => {
console.log(doc.id, '=>', doc.data());
});
})
.catch((err) => {
console.log('Error getting documents', err);
});
请看这张图:
enter image description here
我正在尝试让 Hello World 在这里工作——只需让我的 Node 脚本与 Firebase 对话。我制作了一个我认为应该读取 "stories" 集合的脚本,但我没有收到 Firebase 的回复。我确定我错过了一些非常基本的东西。请帮忙!
var db = admin.database();
var ref = db.ref("stories");
ref.on("value", function(snapshot) {
console.log(snapshot.val());
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
console.log('exiting');
...但我得到的是:
p:0: Browser went online.
p:0: Listen called for /stories default
exiting
p:0: Making a connection attempt
p:0: Auth token refreshed
getToken() completed. Creating connection.
c:0:0: Connection created
c:0:0:0 Websocket connecting to wss://*****.firebaseio.com/.ws?v=5
我想出了一个等待更长时间的方法,得到了这个:
p:0: Browser went online.
p:0: Listen called for /stories default
exiting
p:0: Making a connection attempt
p:0: Auth token refreshed
getToken() completed. Creating connection.
c:0:0: Connection created
c:0:0:0 Websocket connecting to wss://*****.firebaseio.com/.ws?v=5
c:0:0: Closing unhealthy connection after timeout.
c:0:0: Closing realtime connection.
c:0:0: Shutting down all connections
c:0:0:0 WebSocket is being closed
p:0: data client disconnected
p:0: Trying to reconnect in 0ms
0: onDisconnectEvents
p:0: Making a connection attempt
getToken() completed. Creating connection.
c:0:1: Connection created
c:0:1:0 Websocket connecting to wss://*****.firebaseio.com/.ws?v=5
c:0:0:0 Websocket connection was disconnected.
我做错了什么?
真正的 once()
而不是 on()
。 once()
只需查询一次,return 就是一个承诺。 on()
建立一个 运行 的侦听器,直到您将其删除,并且它不是 return 承诺。
ref.once('value')
.then(snapshot => {
console.log(snapshot.val());
})
.catch(error => {
console.error(error);
});
您谈到了 collection
,所以我认为您正在使用 Cloud Firestore,而不是实时数据库。
所以代码应该是:
const db = admin.firestore();
db.collection('stories').get()
.then((snapshot) => {
snapshot.forEach((doc) => {
console.log(doc.id, '=>', doc.data());
});
})
.catch((err) => {
console.log('Error getting documents', err);
});
请看这张图: enter image description here