Javascript 使用.push()添加数据后如何查询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时的代码:

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)