如何在使用.push()添加数据后查询Firebase数据?

时间:2016-12-12 23:39:49

标签: 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}的子节点包含推送键,但我只想获取1的值,而不是推送键。

我用来查询的代码是:

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 个答案:

答案 0 :(得分:1)

如果您只想要' 1'而不是推送键,请尝试使用.set()

firebase.database().ref(`booklogs/${uid}/${book_id}`).set(page_id)

这将摆脱对象,只是给你你想要的价值。 Push会自动为您添加的每个值生成一个键,因此您将始终返回一个对象。从Firebase文档 - "对于基本写入操作,您可以使用set()将数据保存到指定的引用,替换该路径上的所有现有数据。"

https://firebase.google.com/docs/database/web/read-and-write