在猫鼬中创建新文档时可以添加新属性吗?

ram*_*min 4 mongoose mongodb node.js mongoose-schema

我有这个架构(例如):

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

在猫鼬中创建新文档时如何添加新属性?像这样的东西:

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              
  }
});
Run Code Online (Sandbox Code Playgroud)

但这不起作用

Rob*_*kal 5

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

\n

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

\n
var WordSchema = new Schema({\nword: {\n    type: String\n}\n}, {strict: false});\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
doc.get('length')\n
Run Code Online (Sandbox Code Playgroud)\n

或者通过调用以下命令将文档转换为普通的旧 JavaScript 对象:

\n
doc.toObject()\n
Run Code Online (Sandbox Code Playgroud)\n

在检索到的模式对象上。

\n