代码之家  ›  专栏  ›  技术社区  ›  Vik

firebase realtime DB:TypeError:无法将未定义或null转换为对象

  •  0
  • Vik  · 技术社区  · 6 年前

    我有如下疑问

    var db = admin.database();
        var ref = db.ref('orders') ref.orderByChild("order/_date").startAt(begDate).endAt(endDate).once("value").then(
            (resp) =>   { 
    ..
    }).catch(
                    (err) => console.log('failed in sales report:' + err)
            )
    

    TypeError: Cannot convert undefined or null to object 
    

    数据如下所示

    orders: {
      "-LNMPXMb1SGSnkDaEMQO" : {
        "order" : {
          "_cgst" : "11.90",
          "_date" : "1538368446413",
          "_location" : "kapashera",
          "_orderNumber" : "VikKumar-21247",
          "_orderStatus" : "Delivered",
        }
      },
    

    执行时,开始日期和结束日期为:

    begDate:1538352000000 endDate:1538438400000 
    

    所以有两个问题: 1.错误本身。如果没有匹配,如何避免抛出错误?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Renaud Tarnec    6 年前

    你可能犯了与昨天的另一个问题相同的错误: firebase realtime DB querying date between 2 dates does not match anything

    因此,原因可能是 begDate endDate 是数字,但你储存 _date 作为数据库中的字符串。

        2
  •  0
  •   PHILL BOOTH    6 年前

    尝试使用 toISOString 当你保存到fb时

    var _date = new Date().toISOString()
    

    var d = new Date();
    var year = d.getFullYear();
    var month = d.getMonth();
    var day = d.getDate();
    
    var begDate = new Date(year - 1, month, day).toISOString();
    var endDate = new Date(year + 1, month, day).toISOString();