2017-02-24 78 views
1
var MySchema = new Schema({ 
    ... 
    expireAt: { type: Date, default: Date.now }, 
    ... 
}); 

如果我用這個模式一切正常,但如果我設置更復雜的默認這樣的:MongoDB的日期類型:鑄造失敗

var MySchema = new Schema({ 
    ... 
    expireAt: { type: Date, default: (Date.now + 1000)}, 
    ... 
}); 

在創建顯示以下錯誤:

CastError: Cast to date faile for value "function now() .....

我試圖保持出價值,但仍然問題鑄造

var t = Date.now + 1000; 
var MySchema = new Schema({ 
    ... 
    expireAt: { type: Date, default: t}, 
    ... 
}); 

也嘗試與new Date() ...但現在的方式。

我需要這個字段來檢查TTL的expireAt,所以我認爲我不能從Date設置不同的類型。

有什麼建議嗎?

回答

0

您可以設置到期在創建的領域的模式,如:

new Schema({ createdAt: { type: Date, expires: 60*60*24 }}); 

與上面的代碼中創建的文件在24個小時後就會過期。

+0

其實我希望整個對象將被刪除,而不僅僅是字段 – pittuzzo

+0

是的,它會刪除整個文檔。 –

+0

我試過了,但它似乎不工作。我在我的模式上設置了'expireAt:{type:Date,expires:60}'並保留'MySchema.index({「expireAt」:1},{expireAfterSeconds:0});'。 60秒後,記錄仍在我的數據庫中。 – pittuzzo