【问题标题】:Finding a register by field按字段查找寄存器
【发布时间】:2018-11-16 14:25:30
【问题描述】:

我在 firebase 中有我的数据库,你可以在这里看到 https://snag.gy/bhopOk.jpg

用户扫描产品并为您提供该产品的编号,该编号被放入输入中,然后当您单击搜索时,您必须带上该产品的描述和价值并将其显示在前面的某处 This is my frontend

当用户点击搜索时,函数或查询将如何为我带来所请求的数据?我知道这是一个简单的查询,但我不太清楚我是 ionic 新手

我尝试这样做是为了看看我是否在控制台中返回了一些东西,但什么也没有

findproduct(){
   var ref = firebase.database().ref("/productos/");
ref.orderByChild("Producto").equalTo(1706).on("child_added", function(snapshot) {
  console.log(snapshot.key);
});
  }

【问题讨论】:

    标签: javascript angular firebase ionic-framework firebase-realtime-database


    【解决方案1】:

    您可以按如下方式编写函数。但是,请注意query.once() 是异步的并返回一个 Promise。所以你在调用它时必须考虑到这一点。

    findproduct(productID) {
        var query = firebase.database().ref("productos").orderByChild("Producto").equalTo(productID);
        query.once('value', function(snapshot) {
            snapshot.forEach(function(childSnapshot) {
                var childKey = childSnapshot.key;
                console.log(childKey);
                var childData = childSnapshot.val();
                console.log(childData);
            });
        });
    }
    

    当您只想查询一次时,使用once() 方法:它“只侦听一个指定事件类型的事件(在本例中为'alue'),然后停止侦听”。请参阅文档here

    使用on() 方法时,您不断在查询定义的位置监听数据变化。请参阅文档here

    【讨论】:

    • 嗯,现在有点清楚了,谢谢你的回答,但是如果我想把来自我前端的变量而不是数字 1706 ,我该怎么做?因为在那段代码中我只是放了一个静态数字请帮助我
    • 我已经更新了我的答案。但是,请注意query.once() 是异步的并返回一个 Promise。所以你在调用它时必须考虑到这一点。
    猜你喜欢
    • 2011-10-04
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    相关资源
    最近更新 更多