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



我正在使用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 创建,似乎值会持久化。

你使用猫鼬作为数据模型吗?如果是这样,将在文档构造 http://mongoosejs.com/docs/2.7.x/docs/defaults.html 上创建默认值

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

最新更新