mongoose – 更新文档,添加新的密钥(有严格:false)

我有以下mongoose模型:

var mongoose = require('mongoose'); var Schema = mongoose.Schema; var companySchema = new mongoose.Schema({ name: String, long_name: String, address: String, telephone: String, mobile_phone: String, fax: String, email: String, url: String, config:{ language: String, account: String }, items:[{ name: String, internal_id: String, reference_code: String, description: String }] },{ timestamps: true, strict: false }); var Company = mongoose.model('Company', companySchema); module.exports = Company; 

好吧,这个想法是让每个用户在items数组中插入他们自己的字段。 例如,用户将使用几个新的键/值对创build一个新项目。 我会将新项目存储在项目数组中:

 var Company = require('mongoose').model('Company'); exports.createItem = function(req, res, next) { var newitem = { "name": "Syringe Needels", "internal_id": "ID00051", "reference_code": "9506", "description": "My description", "batch": "100", "room": "240", "barcode": "9201548121136" }; Company.findById(req.company, function(error, company) { company.items.push(newitem); company.save(function(err, doc){ return res.status(200).send('The new item has been stored!'); }); }); }; 

架构中未定义的键不是存储区; 只存储name,internal_id,reference_code和description。

我怎么能实现它?

您可以创build一个数据types为子对象的子文档。 这将允许您dynamic地插入/更新密钥

 var companySchema = new mongoose.Schema ({ name: String, long_name: String, address: String, telephone: String, mobile_phone: String, otherProps : {} }) 

这个(otherProps键)将完成任务