node sequelize transaction 事务处理问题

发布于 2022-09-03 09:15:21 字数 2106 浏览 35 评论 0

一个文件project里面有创建项目的方法
一个文件是member里面有项目加入成员的方法

1.先创建项目,再加入人员.
2.现在要做事务处理,如果创建项目成功,加入人员失败,那么这个项目要删除掉.也就是回退.

我现在遇到的问题是
就是两个方法不在同一个文件里面,不知道怎么实现.
` createProject: function(projectObj, callback) {

    var self=this;
     entityFactory.sequelize.transaction(function (t) {
            ProjectEntity.create(projectObj,{transaction: t}).then(function(projectEntity){
                var viewpointNO = {
                    id: dxUtils.generateUUID(),
                    projectId: projectEntity.id,
                    viewpointNO:0
                };
            ViewpointNOEntity.create(viewpointNO,{transaction: t}).then(function(viewpointNOEntity) {
                var groupAllObj = {
                    id: dxUtils.generateUUID(),
                    name: "全部成员",
                    description: '全部成员',
                    ownerId: projectObj.ownerId,
                    projectId: projectEntity.id
                };
            ProjectMemberGroupEntity.create(groupAllObj, {transaction: t}).then(function (groupEntity) {

//这个是role其他文件的方法                  RoleService.findRoleByName("R_PROJECT_OWNER",'global',function(err,role) {
                      if(err){
                          logger.error(err)
                          throw new Error();
                      }else{
                      //这个是addprojectmember 是这个文件里面另外的方法  
                          self.addProjectMember(projectEntity.id, projectObj.ownerId , role.id, t,function (err, projectUserEntity) {
                              logger.error("2222")
                              if(err){
                                  logger.error(err)
                                  throw new Error();
                              }else{
                                  return  projectEntity;
                              }
                          })
                      }

                    })
                });
            });
        });
    }).then(function(result){
        callback(null, result);
    }).catch(function(err) {
        callback(err);
    });`

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清醇 2022-09-10 09:15:21

transaction: t, 把t带到另外一个方法 里面去。

ProjectMemberGroupEntity.create(groupAllObj, {transaction: t})

七颜 2022-09-10 09:15:21

请问楼主解决了这个问题了吗?我也遇到了相同的问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文