【问题标题】:How do I use a Date object in a Mongoose findOne() call如何在 Mongoose findOne() 调用中使用 Date 对象
【发布时间】:2014-06-03 21:23:02
【问题描述】:

我有一个带有日期元素的架构:

var a = new mongoose.Schema({
name : String,
date : Date,
});

我正在处理以 2005-08-13

格式存储日期的数据

当我插入数据时,一切正常。我在 mongo 控制台中查询它,它作为日期存在(时间设置为 12:00 等,这很好)。

问题是,特别是来自 node.js,当我尝试进行查找时:

models('meetings').findOne({ name: result.meeting.$.name }, { date: result.meeting.$.date }, function (err, meeting) {

日期条件总是返回 true - 即无论如何它总是匹配。特别是它认为“2008-04-06”与“2008-04-21”匹配。

有什么想法吗?

【问题讨论】:

  • 这有帮助吗:Mongoose date formatdocumentation 不是。
  • 并非如此 - 日期在数据库中很好。我还没有尝试将它们读出来,所以当我谈到它时,我会解决这个问题。问题是标准说明符在写入数据库时​​似乎不接受与模式相同的格式字符串。

标签: javascript mongoose


【解决方案1】:

您没有在查询条件中包含date,因为您将它作为字段选择对象(第二个参数)传递给findOne。所以你目前只是通过name查询。

将两个查询条件放在一个对象中:

models('meetings').findOne(
    { name: result.meeting.$.name, date: result.meeting.$.date }, 
    function (err, meeting) { ...

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 2021-12-04
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    相关资源
    最近更新 更多