【问题标题】:can I add new property when create new doc in mongoose?在猫鼬中创建新文档时可以添加新属性吗?
【发布时间】:2019-02-03 04:37:28
【问题描述】:

我有这个架构(例如):

var WordSchema = new Schema({
    word: {
        type: String
    }
});
module.exports = mongoose.model('Word', WordSchema);

在 mongoose 中创建新文档时如何添加新属性?像这样:

let Word = require("../models/word");
let initWord = "hello";
word = new Word({
   word: initWord,
   length: initWord.length
});

word.save(function(error) {
  if (error) {  
    //some code              
  } else {
    //some code              
  }
});

但这不起作用

【问题讨论】:

  • 不清楚你在这里问什么。您想知道如何向 mongoose 文档添加其他字段,然后将其保存到数据库中吗?
  • 我想很清楚,我有一个具有 1 个属性的架构,现在我想创建并保存一个具有 2 个属性的文档。但我想在创建新架构时添加第二个属性
  • 如果我理解你的要求,我可能会帮助你:)
  • 是的,我知道,谢谢

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

默认情况下,Mongoose 不允许您向文档动态添加字段。

但是,如果您创建架构时将 strict 选项设置为 false,您可以:

var WordSchema = new Schema({
word: {
    type: String
}
}, {strict: false});

要获取不在架构中的属性,您需要使用特殊的 getter 形式:

doc.get('length')

或者通过调用将文档转换为普通的旧javascript对象:

doc.toObject()

在检索到的架构对象上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-10
    • 2020-05-14
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    相关资源
    最近更新 更多