不保存MongoDB默认值,而是在运行时重新计算

时间:2014-11-27 10:52:10

标签: node.js mongodb express mongoose

我正在使用MongoDB在Yeoman Express MVC生成器上构建一个简单的REST应用程序。

这是我的MongoDB / Mongoose模型(使用完整的update.js模型更新):

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

var UpdateSchema = new Schema({
    title: String,
    text: String,
    authors: String,
    url: String,
    imageUrl: String,
    dateCreated: { type: Date, default: Date.now },
    reloadNeeded: { type: Boolean, default: true }
});

mongoose.model('Update', UpdateSchema);

这是Mongo客户端中的数据:

> db.updates.find();
{ "_id" : ObjectId("5476453f8920d05ecdef4eec"), "title" : "Hello World", "text" : "yoda yoda" }
{ "_id" : ObjectId("547653748920d05ecdef4eed"), "title" : "Hihi", "text" : "mookie" }

这是我的Express应用程序的JSON输出:

[
    {"_id":"5476453f8920d05ecdef4eec","title":"Hello World","text":"yoda yoda","reloadNeeded":true,"dateCreated":"2014-11-27T10:50:10.078Z"},
    {"_id":"547653748920d05ecdef4eed","title":"Hihi","text":"mookie","reloadNeeded":true,"dateCreated":"2014-11-27T10:50:10.078Z"}
]

因此,dateCreatedreloadNeeded在运行时设置 - 但我宁愿在创建文档时设置(并保持)它们。发生了什么事?


如果我是从Mongoose而不是MongoDB shell创建的,那么

更新似乎 值仍然存在。

1 个答案:

答案 0 :(得分:0)

您是否使用mongoose进行数据模型?如果是这样,将在文档构造http://mongoosejs.com/docs/2.7.x/docs/defaults.html

上创建默认值

无论如何,我认为原因是默认