mongodb update数据updatedAt时间不更新问题
今天在写一个koa项目的时候,需要操作mongoDB修改数据,参考之前一些旧项目的代码,他是这样update数据的:
直接把要更新的数据传入进去,这样数据也是可以更新成功,但是会有一个问题,updateAt
的timestamps
永远不会更新(因为我需要用到这个时间来做展示):
Google之后发现很多解释都不是针对这个问题的。我又换了save()
, findOneAndUpdate()
等方法,发现还是有这个问题。
解决办法:
我把这个update方法重写了一下:
发现竟然可以了!
其实我本来是想用javascript的__展开语法(Spread syntax)__重写updateTime
这个值的,结果误打误撞的解决了这个问题:
1 | /** |
虽然这种方法也可以正常更新updateTime
, 但是当我发现是因为缺少$set
更新操作符后,就觉得没有必要再多此一举重写updateTime
了。
之后我又去仔细看了一下文档,里面确实有写这个$set
更新操作符(Update Operators)是必须的:
Update Operators:
总结发现果然文档才是最好的学习资料,借鉴一些旧项目可以快速上手,但是如果想到对所用到的技术有更深的理解的话,还是需要仔细阅读官方文档才行。之前参考的旧项目也是前端同事写的,前端同事接触数据库较少,代码中存在问题的可能性大,所以不要盲目的复制、粘贴。