它将更新除数组中的值之外的所有值,但它不会这样做。
这是我的更新
exports.update = function(req, res) {
if (req.body._id) {
delete req.body._id;
}
plan.findById(req.params.id, function(err, plan) {
if (err) {
return handleError(res, err);
}
if (!plan) {
return res.send(404);
}
var updated = _.merge(plan, req.body);
updated.save(function(err) {
if (err) {
return handleError(res, err);
}
return res.json(200, plan);
});
});
};
这是我的架构
var ContactSchema = new Schema({
location: {
type: String,
required: true
},
total_cost: {
type: Number,
required: true
},
detailed_expenses: {
transport: {
type: String,
required: true,
trim: true
},
Hotel: {
type: Number,
required: true,
trim: true
},
Food: {
type: Number,
required: true,
trim: true
},
Attractions: {
type: Number,
required: true,
trim: true
}
},
holiday_type: {
type: String,
required: true
},
transport_type: {
type: String,
required: true
},
updated: {
type: Date,
default: Date.now
}
});
最佳答案
var updated = _.merge(plan, req.body);
由于 updated
是简单对象,而不是 ContactSchema
的实例,因此它不会包含 save
函数。因此,您需要使用 updated
创建 ContactSchema
实例,然后只有您可以使用 save
函数。以下是您的更新代码。
exports.update = function(req, res) {
if (req.body._id) {
delete req.body._id;
}
plan.findById(req.params.id, function(err, plan) {
if (err) {
return handleError(res, err);
}
if (!plan) {
return res.send(404);
}
var updated = new plan(req.body); //if req.body is document to be saved
updated.save(function(err) {
if (err) {
return handleError(res, err);
}
return res.json(200, plan);
});
});
};
关于javascript - 我的应用程序不会更新数组中的值(Mongoose),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43115722/