Javascript 使用.push()添加数据后如何查询Firebase数据?
以下是我将数据推送到Firebase时的代码:Javascript 使用.push()添加数据后如何查询Firebase数据?,javascript,node.js,firebase,firebase-realtime-database,Javascript,Node.js,Firebase,Firebase Realtime Database,以下是我将数据推送到Firebase时的代码: firebase.database().ref(`booklogs/${uid}/${book_id}`).push(page_id) booklogs : {HUMjSHxVKAPfVXzOId9zCBkGOgv1:{ book28917: { -KYp4FdYYODDZG1FX-Pb: 1 } } } 我的问题是当我查询数据时,${book_id}的子节点包括push键,但我只想得到1的值,而不是push键 我用来查询的代码是: va
firebase.database().ref(`booklogs/${uid}/${book_id}`).push(page_id)
booklogs :
{HUMjSHxVKAPfVXzOId9zCBkGOgv1:{
book28917: {
-KYp4FdYYODDZG1FX-Pb: 1
}
}
}
我的问题是当我查询数据时,${book_id}
的子节点包括push键,但我只想得到1
的值,而不是push键
我用来查询的代码是:
var booklogs = db.ref(`booklogs/${uid}/${project}`);
booklogs.once('value')
.then((snapshot) => {
console.log(`pages viewed are ${snapshot.key}: ${snapshot.val()}`);
console.dir(snapshot.val());
}).catch((error) => {
console.log(`Error : ${error}`);
});
控制台中返回的数据是:
pages viewed are 2634651: [object Object]
{ '-KYp4FdYYODDZG1FX-Pb': 1 }
任何意见都将不胜感激。谢谢 如果您只需要“1”而不需要按键,请尝试使用
.set()
这将摆脱对象,只给你想要的值。Push会为您添加的每一个值自动生成一个键,因此您将始终获得一个对象。从Firebase文档-“对于基本写入操作,可以使用set()将数据保存到指定的引用,替换该路径上的任何现有数据。”
你想查询什么?谢谢你的回复@Shane我所做的就是使用.push().set(object);原因是如果我使用.set(),它会清除以前是我设置的节点的子节点的任何内容。因此,使用.push().set()我能够向book_id/pushkey/节点添加另一项。有趣的是,我能够在angularfire 2
code
ngOnInit(){this.af.database.list(booklogs/${uid}/${book_id}
)中使用此代码查询过去的push key${data[0].pageOrder});//现在只返回值1 console.dir(data);},(error)=>{console.log(book log error:${error}
);}}}@Dave,因此您试图将多个结果保存到.ref(booklogs/${uid}/${book\u id})
ref,然后只查询实际值,而不查询键,对吗?你能快照整个对象的.val(),然后循环遍历每个键以获得你想要的值吗?Cheers@Shane,刚刚看到你的评论,是的,这就是我最后要做的!干杯!
firebase.database().ref(`booklogs/${uid}/${book_id}`).set(page_id)