setName: {
name: 'setName',
description: 'set the name',
inputFields: {...},
outputFields: {...},
mutateAndGetPayload: async (args, context, info) => {
return context.models.sequelize.transaction(async () => {
const {id, username} = args
const { User, Task } = models
let user = await User.findById(fromGlobalId(id).id)
if (user) {
await user.update({username})
}
const task = await Task.findById(1)
await task.update({title: username})
// if (id) throw new Error('error ....')
return {
changedUser: user
}
})
}
}
here in a resolver, maybe several operations in a transaction, aimed to rollback if errors happed like "// if (id) throw new Error('error ....')", but in the log shows
Executing (bff36b7d-c916-45fb-8fbe-72f1dbe0a2e5): START TRANSACTION;
Executing (bff36b7d-c916-45fb-8fbe-72f1dbe0a2e5): SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Executing (bff36b7d-c916-45fb-8fbe-72f1dbe0a2e5): SELECT `id`, `username`, `phone_number` AS `phoneNumber`, `email`, `password`, `gender`, `created_at`, `updated_at` FROM `base_user` AS `User` WHERE `User`.`id` = '3';
Executing (default): UPDATE `base_user` SET `username`='aassdd123',`updated_at`='2018-06-05 13:05:41' WHERE `id` = 3
Executing (default): SELECT `id`, `title`, `created_at`, `updated_at` FROM `base_task` AS `Task` WHERE `Task`.`id` = 1;
Executing (default): UPDATE `base_task` SET `title`='aassdd123',`updated_at`='2018-06-05 13:05:41' WHERE `id` = 1
Executing (bff36b7d-c916-45fb-8fbe-72f1dbe0a2e5): COMMIT;
it seems the operations didn't share the save transction, I had used the cls yet.
here in a resolver, maybe several operations in a transaction, aimed to rollback if errors happed like "// if (id) throw new Error('error ....')", but in the log shows
it seems the operations didn't share the save transction, I had used the cls yet.