这是我的架构
var DrivingSchema = new Schema({
title: { type: String, required: true },
permalink: {type: String, required: true},
phone: {type: Number, required: true},
mobile: {type: Number},
bike: {type: Boolean, default: false }
});
我使用此架构添加数据。它工作正常。
但是当我必须更新数据时,我无法使用此架构,因为它提供了新的_id
。这是我的更新控制器。
DriveModel.findOne({permalink: permalink}, function(err, data) {
if (err)
res.send(err);
var newData = new DriveModel({
title: title,
phone: phone,
mobile: mobile,
bike: bike});
DriveModel.update({_id:data._id}, newData, function(err, result) {
if (err)
res.send(err);
else{res.redirect('/centres/'+permalink);}
});
});
由于_id
冲突,此控制器无法正常工作。 Mongoose Schema documentation建议在架构中使用_id: false
,但它再次适用于更新而不是新插入的数据。现在,我该如何解决这个问题?我是否必须构建另一个仅用于更新的模式,或者无论如何都要处理相同的模式?
答案 0 :(得分:0)
试试这个:
var elements = {"title": title, "phone": phone, "mobile": mobile, "bike": bike};
DriveModel.findOne({"permalink": permalink}, function(err, data) {
if (err) {
res.end(err);
}
for(elem in elements) {
data[elem] = elements[elem];
}
data.save(function(err, place) {
if(err) {
res.end(err);
} else {
res.redirect('/centres/'+permalink);
}
});
});