我有一個貓鼬架構與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