【问题标题】:Firebase - Object.key returns undefinedFirebase - Object.key 返回未定义
【发布时间】:2016-06-21 05:45:16
【问题描述】:

我想根据多个值对查询进行排序。问题是,我无法选择对象键 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

知道吗,我哪里做错了?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    DataSnapshot上使用.forEach()方法

    snapshot.forEach(function(snap) {
      var key = snap.key;
      if (key === travelType) {
        // Do stuff
      }
    });
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 由于 JavaScript 原型的性质,我建议使用 snapshot.forEach() 方法。
      猜你喜欢
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 2015-01-02
      • 2018-03-28
      • 1970-01-01
      相关资源
      最近更新 更多