我试图将更新保存到子文档中,但是当我保存父文档时,它消失了(因此失去了包括更新在内的所有数据)。
这是我的路线:
router.put('/input/:parentid/:childid', urlencodedParser, function(req, res, next){
// Update Already Created Incident
async function update(id){
let checkedUnits = [];
let timeEntries = [];
recall = [];
units.forEach(unit => {
if(req.body[unit.id]){
checkedUnits.push(unit._id);
}
});
// console.log(personnel);
personnel.forEach(person => {
if(req.body[person._id]){
let PERSON = {person: {personId: person._id}}
recall.push(PERSON);
}
});
//===================FIND PARENT DOCUMENT===================================//
CallData.findOne({_id: id}, (err, doc)=>{
//====================TARGET CORRECT SUBDOCUMENT by id =====================//
subdoc = doc.incidents.id(req.params.childid);
//===========================UPDATE DOCUMENT=============================//
date = moment(req.body.dispatchDate).format('YYYY-MM-DD')
doc.date=date,
subdoc.incidentNumber = req.body.incidentNumber;
subdoc.callType = req.body.callType;
subdoc.times.dispatch = moment(req.body.dispatchDate).format('MM/DD/YY')+' '+req.body.dispatchTime;
subdoc.times.clear = moment(req.body.clearDate).format('MM/DD/YY')+' '+req.body.clearTime;
subdoc.address.placeName = req.body.locationName;
subdoc.address.streetAddress = req.body.streetAddress;
subdoc.address.apt = req.body.apt;
if(req.body.disposition !== "Choose..."){
subdoc.disposition.selected = req.body.disposition;
}
subdoc.disposition.typed = req.body.other;
subdoc.units = checkedUnits;
subdoc.recall = recall;
//==============Save Document===============//
doc.save(err=>{if(err){console.log(err)}); //<==============No error thrown here.
res.json(doc); //<==================Produces a correct json of the updated doc.
});
}
update(req.params.parentid);
});
以上内容在文档上运行后,它将从数据库中消失。我不确定doc.save为什么要删除该文档。
我尝试使用异步/等待和CB。我不确定如何在子文档数组中选择正确的子文档。猫鼬的文档说要做“ parent.sub.id(_id)”来选择它,但我感觉这就是我要去的地方。
感谢您的见解。 -亚当
答案 0 :(得分:0)
答案在这里:
date = moment(req.body.dispatchDate).format('YYYY-MM-DD')
它正在更改日期格式,因此我找不到我的数据,我以为没有删除它。只是被更改。
我已将代码更正为:
date = moment(req.body.dispatchDate).format('YYYY/MM/DD')
现在我可以很好地工作了。
感谢您的帮助。