我使用Sequelize 3.x
/ PostgreSql 9.6
并执行下一个代码:
async create(rawUser, rawMeta) {
let transaction = await models.sequelize.transaction();
logger.info('User creating - Transaction started');
try {
// creating record in User table
let options = {
include: [ models.UserMeta ],
transaction: transaction
};
rawUser.UserMetum = rawMeta;
let createdUser = await models.User.create(rawUser, options);
// Set user's id as sort_order
await models.User.update({'sort_order': createdUser.id}, {
where: {'id': createdUser.id},
transaction: transaction,
fields: ['sort_order']
});
let res = await transaction.commit();
if (!res) {
throw new CustomError('Error was occured during creating user', 422, 'TRANSACTION_ERROR');
}
events.emit('user.create', createdUser, createdUser.UserMetum);
logger.info(`User #${createdUser.id} was created`);
return createdUser;
} catch (e) {
logger.error('User creating - error:', e);
await transaction.rollback();
throw e;
}
}
有时没有创建用户,并且在日志中只有下一行:
Executing (39545abe-031b-4a8b-bff6-7ab45552a49a): START TRANSACTION;
Executing (39545abe-031b-4a8b-bff6-7ab45552a49a): SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
info: [Object.create (/usr/src/be/services/user.js:625:20)] User creating - Transaction started
然后,将不处理所有对API的请求。同时,DB运行良好,并使用psql
执行查询。我无法不断重现此错误。
请推荐我如何找出这种行为的原因。