【问题标题】:MongoDB default values are not saved, instead re-calculated at runtimeMongoDB 默认值不保存,而是在运行时重新计算
【发布时间】:2014-11-28 06:23:27
【问题描述】:

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

【问题讨论】:

  • Mongoose 默认值肯定会在创建文档时保留,但如果文档已经存在,则不会添加它们。
  • @JohnnyHK 我需要做些什么来确保我的模型更改得到执行吗?
  • 更新:如果我从 Mongoose 而不是 MongoDB shell 创建,似乎值 ARE 会持续存在。

标签: node.js mongodb express mongoose


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多