这是我的代码:
const result = await Todo.updateMany(
{ _id: { $in: ids }, userId },
{ $set: { complete } },
{ new: true }
).populate('userId', '_id');
res.json({ todos: result })
Run Code Online (Sandbox Code Playgroud)
它适用于更新数据,但返回以下内容:
{ n: 1,
nModified: 1,
opTime:
{ ts:
Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1543568180 },
t: 1 },
electionId: 7fffffff0000000000000001,
ok: 1,
operationTime:
Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1543568180 },
'$clusterTime':
{ clusterTime:
Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1543568180 },
signature: { hash: [Binary], keyId: [Long] } } }
Run Code Online (Sandbox Code Playgroud)
我怎样才能退回更新后的模型?
我认为不可能更新多个文档并返回所有更新的文档。
update()或updateMany()方法更新多个文档并仅返回WriteResult
findAndModify()如果使用 MongoDB 方法更新单个文档,您可以更新文档作为响应{new: true}。
从文档中。
findAndModify:findAndModify 命令修改并返回单个文档。默认情况下,返回的文档不包含更新时所做的修改。要返回包含更新后所做修改的文档,请使用新选项。
你能做的是:
再次获取那些已更新的文档。
const result = await Todo.updateMany(
{ _id: { $in: ids }, userId },
{ $set: { complete } },
{ new: true }
).populate('userId', '_id');
// here you can update and then get all documents again
const updatedResult = await Todo.find(
{ _id: { $in: ids }, userId }
).populate('userId', '_id');
res.json({ todos: updatedResult });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15548 次 |
| 最近记录: |