我正在尝试使用今天的日期作为其中的字段 搜索 - 此时此刻,无需担心集成 moment.js 库。今天的日期只有一个记录在“表格”中。
app.dashboardreport
.findOne()
.$where(function() {
return this.createdOn.toJSON().slice(0, 10) == Date.now().toJOSN().slice(0, 10);
})
.exec(function(err, foundDashboardReport) {
$where
函数抛出错误。
MongoError:TypeError:无法调用未定义的方法'toJSON' at_funcs1(_funcs1:2:26)'createdOn.toJSON()附近.tieple(0,10)== Date.n'(第2行)
看来“这个”可能没有定义;但是,我知道有一个符合这些标准的记录。
我是否错误地构建了查询?如果是,那么需要在函数中进行哪些更改以便我可以过滤该条件?
答案 0 :(得分:1)
这里的问题是缺乏对基于文档的存储中数据结构的理解方式的理解。每个文档必须包含createdOn
字段 - 如果不存在,则会收到此错误。 this
已定义; createdOn
不是。
如果您的数据不统一,则需要评估字段的存在。所以,它可能看起来像这样:
app.dashboardreport
.findOne()
.$where(function() {
/* The check for the field createdOn ensures that the compared document
does indeed contain the field */
return this.createdOn && this.createdOn.toDateString() == new Date().toDateString();
})
请注意在return语句中添加this.createdOn
评估。
答案 1 :(得分:0)
您收到此错误,每个文档中都没有CreatedOn
。你可以这样来解决这个问题:
(this.createdOn|| new Date('31 Dec 9999')).toJSON()