gpt4 book ai didi

javascript - 无法使用 Node.js 解析 Firebase 的快照

转载 作者:行者123 更新时间:2023-12-03 01:41:45 26 4
gpt4 key购买 nike

我有一个查询,它返回快照;

ref.orderByChild("index").equalTo(currentIndex).once("value", function(snapshot) {})

当我用 ; 打印快照时

console.log(snapshot.val());

打印如下;

{'-LBHEpgffPTQnxWIT4DI':
{
date: '16.05.2018',
first: 'let me in',
index: 1,
second: 'let others in'
}
},

我需要获取起息日期,即此快照的第一个值。

我试过了;

childSnapshot.val()["first"] 
childSnapshot.val()["date"]

childSnapshot.child.('first') 
childSnapshot.child.('date')

但是没有成功。

请指出我犯的错误...

我的完整代码如下;

var indexRef = db.ref("/LastIndex/");
var ref = db.ref("/Source/")

indexRef.on("value", function(indexSnapshot) {
console.log(indexSnapshot.val());

var currentIndex = indexSnapshot.val()

ref.orderByChild("index").equalTo(currentIndex).once("value", function(snapshot) {
console.log(snapshot.val());

if(snapshot !== null) {
snapshot.forEach(function (childSnapshot) {

if(childSnapshot !== null) {
var newRef = db.ref("/ListTest/");
var key = newRef.push({
"firstLanguageWord": childSnapshot.val()["first"] ,
"secondLanguageWord": childSnapshot.val()["second"] ,
"wordType": childSnapshot.val()["type"],
"date": childSnapshot.val()["date"],
"translateType": childSnapshot.val()["transType"]
});

currentIndex++;
indexRef.set(currentIndex);
}
});
}
});

BR,

埃尔德姆

最佳答案

根据您在下面的评论以及对原始问题的更新进行更新:

如果您的代码看起来“无限迭代”,那是因为您在第一个查询中使用了 on() 方法。事实上,on() 方法“监听特定位置的数据更改。”,如 here 所解释的那样。 .

如果您只想查询一次引用,请使用 once() 方法。该文档是here .

<小时/>

以下是Query ,因为您在 Reference 上调用 orderByChild() 方法(以及 equalTo() 方法)。

ref.orderByChild("index").equalTo(currentIndex)

如上所述here在文档中:

Even when there is only a single match for the query, the snapshot is still a list; it just contains a single item. To access the item, you need to loop over the result:

ref.once('value', function(snapshot) {  
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
var childData = childSnapshot.val();
// ...
});
});

所以你应该这样做:

ref.orderByChild("index").equalTo(currentIndex).once("value", function(snapshot) {
snapshot.forEach(function(childSnapshot) {
console.log(childSnapshot.val().first);
console.log(childSnapshot.val().date);
});
});

关于javascript - 无法使用 Node.js 解析 Firebase 的快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50815298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com