【发布时间】:2018-03-05 09:34:59
【问题描述】:
每当我进行更新 api 调用时,我只需要更新 serviceActiveFlag 状态。在更新 api 调用之后,我可以看到创建了一个带有空车辆数组的新文档,如下所示。
_id:59c76073c11d3929148f500f
vehicle:Array
_v:0
id 字段将覆盖每个 put api 调用。
谁能帮我解决这个问题?
架构
var localTransportSchema = new Schema({
name: { type: String, required: false, trim: true },
contact: {
addressLine1: { type: String, required: false },
serviceActiveFlag: { type: String, required: false, enum: ['Y', 'N'] },
},
vehicle: [{
vehicleType:{ type: String, required: false, enum: ['sedan', 'hatchback', 'suv', 'mpv', 'luxury'] },
}]
});
module.exports.accomodationModel = mongoose.model(collection, localTransportSchema);
控制器
var updates = {
$set: {
"contact.addressLine1": req.body['addressLine1'],
"contact.serviceActiveFlag": req.body['serviceActiveFlag']
}
};
transportModel.findOneAndUpdate({ "name": req.body['providerName']},
updates, { returnOriginal: false, upsert: false }, function (err, doc) {
if (err) {
logger.error("Error while updating record : - " + err.message);
return res.status(409).json({
"Message": "Error while updating transport details for provider " + req.body['providerName'] + " in transport details table"
});
} else if (doc === null) {
logger.error("Error while updating record in transport details : - unable to update database");
return res.status(409).json({
"Message": "Error while updating transport details for provider " + req.body['providerName'] + " due to " + err.message
});
}
});
【问题讨论】:
-
你用的是什么版本的猫鼬?查询完成时回调中
doc的输出是什么。 -
我正在使用 4.11.11.Doc 返回更新后的文档。
-
您确定没有其他操作添加不需要的文档吗?此外,findOneAndUpdate 没有将
returnOriginal列为选项 -
是。没有其他操作正在添加不需要的文档
-
我对猫鼬并不完全熟悉,但这可能是您的出口问题吗?在您的架构中,您正在导出
accomodationModel,但您的控制器正在引用transportModel。
标签: javascript node.js mongodb mongoose