【问题标题】:How to pass a variable with a value in firebase query syntax如何在firebase查询语法中传递具有值的变量
【发布时间】:2018-03-05 06:55:28
【问题描述】:

我试图使用 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());
)};

【问题讨论】:

  • 说我的用户正在扫描一些 rf 身份证,并且 book 的值在 var (javascript) 中,虽然我上传到 firebase 创建一个孩子,但我想要动态的,如果this book then so this, .. eg, if tcp/ip then show all details ""

标签: javascript firebase firebase-realtime-database


【解决方案1】:

在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

如果查询中包含多个参数等更复杂的查询,则需要使用 Elastic Search 等第三方解决方案。

【讨论】:

    【解决方案2】:

    假设您的数据库中有 /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。在这种情况下,将具有该 ID 的书籍存储在 JSON 中会更有效:

    "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 直接访问图书的数据,这样可以更好地扩展。

    【讨论】:

    • booksRef.child("124562").on('value',function(snap){ console.log(snap.val()); )};在这里,您似乎将值预先确定为“124562”,说用户需要另一个,即 987654
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2019-12-22
    • 2018-07-15
    • 2014-03-01
    • 2019-02-13
    • 2018-02-17
    • 1970-01-01
    相关资源
    最近更新 更多