Mongoose fineOne没有找到任何约会

时间:2017-06-09 06:03:40

标签: mongodb mongoose

我无法使用带有日期的findOne在MongoDB中找到记录。

我的架构

var userSchema = new Schema({
  profileID:       String,
  notifications:   []
});

//I am storing the date variable as new Date();

我的数据

{
"_id": "5938dc8db08803411af0cd05",
"profileID": "123",
"notifications": [
  {
    "read": false,
    "date": "2017-06-08 13:16:58"
  }
]
}

我的代码

//I have taken the rest of the junk out as the problem is just with this part. By junk I mean routes and all for Node.js
console.log("1: " + req.body.date);
console.log("2: " + typeof(req.body.date));
console.log("3: " + req.body.id);

userModel.findOne({profileID: req.body.id, "notifications.date": new Date(req.body.date)},

  function(err, data) {
    if (err){
      console.log("4: " + err);
    } else {
      console.log("5: " + data);
    }
});

console.log的结果:

1: 2017-06-08 13:16:58
2: string
3: 123
5: null

我做错了什么?我已经尝试了各种各样的方法与日期,但它没有工作。

这肯定是日期的问题,但我将如何让它发挥作用?

我的堆栈:MongoDB v:3.1.5,Mongoose:4.4.10

提前致谢

1 个答案:

答案 0 :(得分:1)

不是以这种方式定义notifications,而是需要将其定义为指定其内容类型的对象数组。您的新架构应该是:

var userSchema = new Schema({
  profileId: String,
  notifications: [{
    read: Boolean,
    date: Date
  }]    
});

这可以解决您的问题并返回日期。