猫鼬交易:如何检索一个操作要在另一操作中使用的结果?

时间:2019-02-21 15:49:37

标签: mongodb mongoose transactions

MongoDB 4.0支持事务,Mongoose从版本5.12开始提供实现。在我的特定用例中,我正在为具有两个集合的简单博客应用程序设计架构:AuthorsPosts

作者

_id: ID!
firstName: String!
lastName: String!
posts: [Posts]

帖子

_id: ID!
title: String!
content: String!
author: { _id: ID!, firstName: String!, lastName: String! }

在创建新帖子时,这是一个高度简化的流程:

  1. 将帖子数据(_idtitlecontentauthor{_id, firstName, lastName})保存到Posts集合中。
  2. 在步骤1中为插入自动生成的_id
  3. 使用在步骤2中为其Authors字段检索的_id更新posts[]集合。

这两个操作当然需要是事务性的。因此,如果步骤1 失败,那么步骤3 也应该失败,反之亦然。但是,我面临的挑战是第2步。如何从一个操作中检索自动生成的_id字段的值以在事务设置中的另一个操作中使用?很抱歉,如果已经有人问过这个问题,或者有一个超级简单的解决方案使我不知所措。有没有朝着正确的方向前进?

使用fawn(一个第三方插件),我可以轻松地通过类似authors.posts[n]._id: {$ojFuture: "0._id"}的方式来完成此操作。除了猫鼬,还有其他选择吗?我正在寻找替代方法的原因是,fawn似乎没有得到积极维护,因为MongoDB删除了符合ACID的4.0,并且最近抛出了很多弃用警告。

0 个答案:

没有答案