我最近开始使用React.js中的Firebase开发 -
目前,我正试图从数据库中提取并使用数据创建一个新对象。
这是代码:
var arr = firebase.database().ref("news");//this is the ref.
arr.once('value', function (snapshot) {//will return the array value
model = {//this is the model i want to .push()
title: title,
content: content,
img: img,
category: category,
likes: likes,
id: snapshot.val().length//This is where I want to add the arr.length
};
var promise = arr.push(model);
promise.then(function(){
...
})
})
问题是arr.push(model)在加载model.id
变量之前运行。
答案 0 :(得分:1)
这里发生的是snapshot.val()返回一个对象而不是一个数组。因此,如果您尝试访问snapshot.val()。length。
,它将返回undefined现在的解决方案是将对象转换为数组以获取计数。
id: Object.keys(snapshot.val()).length
这可能会解决您的问题。
很抱歉,如果这不是你想要的。
答案 1 :(得分:0)
@Meghashyam解决方案应该有效。 Firebase还有一个实用程序snapshot.numChildren();
,它将返回number
个DataSnapshot
个子属性,如果对象为空,它将返回0
model = {
title: title,
content: content,
img: img,
category: category,
likes: likes,
id: snapshot.numChildren()
};
您可以查看更多详细信息here