开发者问题收集

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

2018-10-01
474

我有如下查询

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 和 endDate 为:

begDate:1538352000000 endDate:1538438400000 

因此有两个问题: 1.错误本身。如果没有匹配,我该如何避免抛出错误? 2.当日期值介于 begDate 和 endDate 之间时,为什么上述记录不匹配?

2个回答

您可能犯了与昨天的其他问题相同的错误: firebase realtime DB 查询两个日期之间的日期不匹配任何内容

因此,原因可能是因为 begDateendDate 是数字,但您将 _date 作为字符串存储在数据库中。

Renaud Tarnec
2018-10-01

保存到 fb 时尝试使用 toISOString

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();
PHILL BOOTH
2018-10-01