我有一个猫鼬架构与timestamp
选项设置为true。问题与猫鼬时间戳和时代转换为日期()
schema = new mongoose.Schema({
...
},
{ timestamps: true });
现在我有一个Android应用程序,获得使用System.currentTimeMillis()
其中工程一切都很好,给我的毫秒数,因为UNIX纪元时间的时间戳。
我将这些数据发送到我的Node.js/Express服务器,该服务器只需要时间并返回在该特定日期之后创建的文档。
// get all docs
router.get('/api/seekers', function(req, res) {
Seeker.find({createdAt:{ $gt: new Date(req.query.timestamp) }}, function(err, seekers) {
if(err)
res.send(err);
else
res.json(seekers);
});
});
所以我送https://api_url.com/api/seekers?timestamp=1479431351762
作为对服务器的请求。
现在一对夫妇的事情发生了:
我送以毫秒为单位的值,并得到这个错误
{"message":"Cast to date failed for value \"Invalid Date\" at path \"updatedAt\"","name":"CastError","kind":"date","value":null,"path":"updatedAt"}
调查的一点点后,原来你需要将秒数传递给
Date()
。所以,我将值除以1000得到秒(
req.query.timestamp/1000
)。现在我没有收到错误,但查询约束不起作用。我从开始的时候就掌握了所有的价值。我搬了蒙戈外壳,检查问题是否仍然存在,对此事实证明它不因为我可以在毫秒值传递给蒙戈的日期:
> new Date(1479431351762) ISODate("2016-11-18T01:09:11.762Z")
但是,如果我试图穿过第二值
Date()
,事实证明它实际上是送我刚开始的时候:> new Date(1479431351) ISODate("1970-01-18T02:57:11.351Z")
我无法弄清楚,我能做些什么服务器请求和猫鼬正确处理时间戳和查询我的数据库?
有你试过铸造查询字符串来诠释为'Seeker.find({createdAt:{$ GT,新的日期(parseInt函数(req.query.timestamp))}},函数(呃,求职者){...}'? – chridam
呃,呃,应该是我尝试的第一件事,无论如何,谢谢! – doberoi96