node.js - 为什么即使更新确实发生了 findOneAndUpdate 也不返回文档?
问题描述
我在 nodejs mongodb 库上遇到 findOneAndUpdate 操作问题,我无法判断更新是否完成。
我写了一个查询,可以按预期成功更新文档,但是更新后返回了 value:null。最终,我想区分三种情况:
- 已找到文档,无法更新
- 找到并成功更新文档
未找到文档
const result = await collection.findOneAndUpdate( { caseId: caseId, list: {$ne: userId}, $expr: {$lt:[ {$size: '$list'}, 'maxLength']} }, { $push: {assignees: userId}}) return result.value;
关于查询的一点解释:
如果我想附加userId
到list
文档的字段
- caseId 匹配,
- 用户当前不在
list
, - 列表的大小小于
maxLength
解决方案
添加{new: true}
将在结果中返回更新的文档
const result = await collection.findOneAndUpdate(
{ caseId: caseId, list: {$ne: userId}, $expr: {$lt:[ {$size: '$list'}, 'maxLength']} },
{ $push: {assignees: userId}},
{new: true}
)
推荐阅读
- c# - 为什么我通过尝试读取 Excel 单元格的值得到空引用异常?
- javascript - $http.get 函数之外的 AngularJS 未定义值
- vuejs2 - 如何动态更改 Element UI 和 Vue 中的语言?
- mysql - 使用 LIMIT 时的 phpMyAdmin 挂起
- c# - 更改方法以使用 Tuple 返回两个字典
- javascript - 返回特定语句的正则表达式
- ios - iOS 12 企业应用程序在启动时崩溃
- json - 如何在批处理脚本中从 JSON 数组文件中迭代对象
- sql - Postgres Group by 忽略空值
- angular - Angular Elements 在一行上生成 HTML