Firebase:如何按键查询?

时间:2016-11-07 21:21:16

标签: firebase firebase-realtime-database

我有一个我想查询的位置表。关键是“050PNS74ZW8XZ”。

enter image description here

如您所见,它存在。

但是,当我打印出任何属性时,它不起作用

function testing(req, resp) {
  const location = database.ref('locations').equalTo('050PNS74ZW8XZ');
  console.log('location:', location.account_capabilities); // <--- prints undefined
  resp.json("asfdsf");
}

我做错了什么???

3 个答案:

答案 0 :(得分:9)

如果您知道密钥,则可以使用child方法。

然而,更基本的问题是该值不能直接从ref获得。您可以使用once方法获取值 - 侦听value事件 - 它返回一个解析为快照的承诺:

function testing(req, resp, next) {
  database.ref('locations').child('050PNS74ZW8XZ')
    .once('value')
    .then(function(snapshot) {
      var value = snapshot.val();
      console.log('location:', value.account_capabilities);
      resp.json(value.account_capabilities);
    })
    .catch(next);
}

documentation中有更多信息。

答案 1 :(得分:2)

如果您知道可以直接访问子项的密钥,则将其转换为带有$ firebaseObject的对象。

var locref = database.ref('locations').child('050PNS74ZW8XZ');
const location = $firebaseObject(locref);

从列表中查询时应使用equalTo函数。

答案 2 :(得分:0)

怎么样

const location = database.ref('locations/050PNS74ZW8XZ');