node sequelize transaction 事务处理问题
一个文件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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
transaction: t, 把t带到另外一个方法 里面去。
ProjectMemberGroupEntity.create(groupAllObj, {transaction: t})
请问楼主解决了这个问题了吗?我也遇到了相同的问题