是否可以添加Mongoose模型中未描述的字段?

时间:2017-05-08 19:41:57

标签: node.js mongodb mongoose

例如,我有这样的架构:

Future.get(<TimeOut>)

当我创建新实例时,是否可以添加额外的字段而不在模型中描述它们?例如:

client.getInstitutionById('ins_108768', {include_display_data: true} (err, result) => {
 // Handle err
 const logo = result.institution.logo;
});

3 个答案:

答案 0 :(得分:1)

您可以使用strict: false选项。

Documentation

  

strict选项(默认情况下启用)确保传递给我们的模型构造函数的未在我们的模式中指定的值不会保存到db。

您更新的架构如下所示:

let carSchema = new mongoose.Schema({
    url:  String,
    unique: {type: String, index: { unique: true }},
    number: String,
    title: String,
    price: String,
}, { strict: false });

答案 1 :(得分:0)

你不能因为mongoose schema会检查该属性是否存在,但是你可以做的是,你可以将以下属性添加到carSchema:

externalData: Object

您可以将数据设置为您想要的任何数据。

答案 2 :(得分:0)

您可以使用&#39; Schema.Types.Mixed&#39;对于模式中的某些字段:

let mongoose = require('mongoose');

let carSchema = new mongoose.Schema({
    url:  String,
    ...
    data: Schema.Types.Mixed
});

然后使用.data字段作为js对象。