刚接触时候没想那么复杂,感觉更新就是update,在ctx.request.body中有文档匹配的上的就更新,
没有匹配的上的就不更新。但是后面接触到了嵌套数组,发现好像只要涉及到了嵌套数组内的文档
,更新就变得复杂了很多
举个例子:
async updatecertificate(ctx){
const {userid = "",certifitecateid =""} = ctx.params
const {name, certificate_time, certificate_id, valid_period,
major, category, licensing_agency, licensing_imageurl}= ctx.request.body
const user = await User.findById(userid)
const certifitecate = await User.find({"professionaltitle._id":certifitecateid})
if(!user || !certifitecate){ctx.body = {message:'用户不存在或者证照不存在'}}
const succes = await User.update({"_id":userid, "professionaltitle._id":certifitecateid},
{ $set: {'professionaltitle.$.name':name,'professionaltitle.$.certificate_time':certificate_time,
'professionaltitle.$.certificate_id':certificate_id, 'professionaltitle.$.valid_period':valid_period,
'professionaltitle.$.major':major, 'professionaltitle.$.category':category,'professionaltitle.$.licensing_agency':licensing_agency,
'professionaltitle.$.licensing_imageurl':licensing_imageurl}})
ctx.body = succes;
}
感觉嵌套文档内的修改一定要一个柱对一条梁的感觉,并没有像普通文档那样用update的方法就可以很智能的识别 ctx.request.body中对应文档中的键值对那样,很不方便,不知道有哪位网友有类似的疑惑解决的可以帮忙解惑一下,问题有点低级,别见笑