Firebase - Object.key返回undefined

时间:2016-06-20 18:41:37

标签: javascript firebase firebase-realtime-database

我想根据多个值来排序查询。问题是,我无法选择对象键type,因为我这样做时会undefined

var filterDataAccordingToDate = function(ref, startTime, endTime, travelType) {

            ref.orderByChild('date')
            .startAt(startTime).endAt(endTime)
            .once('value', function(snapshot) {
                var travel = snapshot.val();

                console.log("TRAVEL OBJ: " + util.inspect(travel, false, null));
                console.log("TRAVEL TYPE: " + travel.type);

                if (travel.type == travelType) {
                    // DO STUFF
                }

            });
    }

第一个console.log()返回正确的对象:

TRAVEL OBJ: {
  "-KKiZKAVH0-QulKnThhF" : {
    "date" : 1466439009,
    "dest" : 1,
    "fbKey" : "-KKiZKAVH0-QulKnThhF",
    "type" : 1
  }
}

第二个:TRAVEL TYPE: undefined

任何想法,我犯了错误?

2 个答案:

答案 0 :(得分:3)

使用.forEach()

上的DataSnapshot方法
snapshot.forEach(function(snap) {
  var key = snap.key;
  if (key === travelType) {
    // Do stuff
  }
});

答案 1 :(得分:2)

由于您将检索多个对象,因此需要对它们进行迭代以获取每个对象的值。

for (var key in travel) {
      console.log("TRAVEL OBJ: " + util.inspect(travel[key], false, null));
      console.log("TRAVEL TYPE: " + travel[key].type);
}