我试图使用JavaScript获取书籍值并存储在名为“bookName”的变量中,现在它具有十进制值124562.此十进制值表示一些书籍详细信息。
现在问题在于firebase我做了一个数据建模,一个名为“books”的节点,在那里有不同的细节,如:
书名:tcp / ip
书号:124562
书页:300
问题是如何在firebase中获取它将比较书籍节点下的不同书籍的查询并获取书号124562的详细信息?
您以视频或事件语法的形式提供的帮助将会很有帮助。
我也查了一下,语法
UserRef.orderByChild('books').equalTo(value).on('child-added',function(snap){
console.log(snap.val());
)};
在firebase查询中,您可以一次基于一个参数进行查询,因此如果您想要获取名称以“tcp”开头的书籍,您可以像这样查询
userRef.child("books").orderByChild("name")
.startAt(queryText).endAt(queryText+"\uf8ff").once("value")
包含书页:
userRef.child("books").orderByChild("name")
.startAt(fromPageNumber).endAt(toPageNumber).once("value")
这里也有类似的答案:How to do a simple search in string in Firebase database?
查看文档:
https://firebase.google.com/docs/database/admin/retrieve-data#section-queries
如果在查询中包含多个参数等更复杂的查询,则需要使用第三方解决方案,如弹性搜索。
假设您在数据库中的/books
下有这个JSON:
"books": {
"-Lsdfkfdskgdskg1": {
"name": "tcp/ip"
"number": 124562
"pages": 300
},
"-Lsdfkfdskgdskg1": {
"name": "some other name"
"number": 987654
"pages": 120
}
}
您可以使用以下方式查询:
var booksRef = firebase.database().ref("books");
booksRef.orderByChild('number').equalTo(124562).on('child_added',function(snap){
console.log(snap.val());
)};
代码中的更改:
number
排序并过滤child_added
与_
请注意,您的图书似乎已拥有自己的唯一ID。在这种情况下,在JSON中存储该ID下的书籍会更有效:
"books": {
"124562": {
"name": "tcp/ip"
"pages": 300
},
"987654": {
"name": "some other name"
"pages": 120
}
}
现在您无需查询即可加载该书:
booksRef.child("124562").on('value',function(snap){
console.log(snap.val());
)};
添加更多书籍时查询会变慢。但是使用这种JSON结构,您可以根据其ID直接访问该书的数据,该ID可以更好地扩展。