mongoose exec 方法
因为我使用 mongoose 的 Query 方法一直都没有加 exec() 方法,但是使用 nestjs 生成的 service 文件里的查询方法,尾巴会带上一个 exec()方法,所以我查了一下文档,了解这个 exec()方法加与不加有什么区别.
正常的 Query 方法
返回的是一个
这个
exec() 方法
exec 方法返回的是一个 Promise 对象,所以在 await 后面,js 会自动拿到 Promise 的 resolve 结果.
但是为什么我之前不加exec(),最后都能拿到查询数值呢?
await 会将后面接的 Promise 或者 thenable 对象取.then().resolve()的结果.
而这个 Query 对象就是一个 thenable 对象.
如果开发者没有对对象进行下一步操作,await 会去执行.then 方法,再拿到最后的 resolve 数值.
结论
.exec()方法有点像是申明这条查询语句到此结束,开始执行了.
而没有加的情况,最后也会执行.then 方法,本质上没有太大的区别,从代码可读性和严谨性方面,加上 exec() 会更好一些