Mongoose 与 NodeJS:文档日期的默认值仅在服务器重新启动时更新

Qua*_*ite 2 mongodb node.js

我有一个像这样声明的猫鼬模式:

var PostSchema = new mongoose.Schema({
    timestamp: {type: Number, default: Date.now()},
});
Run Code Online (Sandbox Code Playgroud)

我定义了一条非常有效的创建帖子的路线。我用来创建帖子的代码如下:

/* POST Create new post (auth required)*/
router.post('/', auth, function(req, res, next) {
  var post = new Post();
  post.save(function(err, post){
    if(err){ return next(err); }
    res.json(post);
  });
});
Run Code Online (Sandbox Code Playgroud)

然而我注意到我的帖子的时间戳不会随着时间而改变!事实上它们根本没有改变。例如,以下是最后三篇文章:

{
_id: "570aa4c946b52c7656cd8cf5",
__v: 0,
timestamp: 1460313633406
},
{
_id: "570aa4e546b52c7656cd8cf6",
__v: 0,
timestamp: 1460313633406
},
{
_id: "570aa59c46b52c7656cd8cf7",
__v: 0,
timestamp: 1460313633406
}
Run Code Online (Sandbox Code Playgroud)

它们都是在 20 分钟间隔内发布的,但它们都具有相同的时间戳。

Jos*_*der 5

您可以将函数传递给猫鼬模型,您可以在创建模型时分配一个值。仅使用 Date.now 来代替,每次保存条目时都会调用它。

default: Date.now() //returns a value at model creation
default: Date.now   //adds the function to the model, mongoose will run any functions passed when a new entry is created -> that is what you need`\
Run Code Online (Sandbox Code Playgroud)