我有以下 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 数组中插入自己的字段。例如,用户将使用多个新的键/值对创建一个新项目。我会将新项目存储在 items 数组中:
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!');
});
});
};
模式中未定义的键不会被存储;仅存储名称、internal_id、reference_code 和说明。
我怎样才能实现它?
最佳答案
您可以创建数据类型为混合对象的子文档。这将允许您动态插入/更新 key
var companySchema = new mongoose.Schema ({
name: String,
long_name: String,
address: String,
telephone: String,
mobile_phone: String,
otherProps : {}
})
这个(otherProps 键)将完成任务
关于node.js - Mongoose - 更新文档,添加新 key (具有严格的 :false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35561512/