假设我有一个名为Item的表,其中的字段名为“ name”。名称字段上有一个唯一的键约束。为什么在等待调用时这两个函数的行为会有所不同?唯一的区别是,一个在销毁物品之前等待,而另一个则返回销毁的保证。这些用途不应该完全相同吗?
const createAndDestroyWorksFine = async (name) => {
await Item.create({ name })
const item = await Item.findOne({ where: { name } });
await item.destroy();
}
const createAndDestroyCausesError = async (name) => {
await Item.create({ name })
const item = await Item.findOne({ where: { name } });
return item.destroy();
}
async function test() {
// this works
await transaction(createAndDestroyWorksFine('item'));
await transaction(createAndDestroyWorksFine('item'));
// this fails often, with a duplicate key error
await transaction(createAndDestroyCausesError('item'));
await transaction(createAndDestroyCausesError('item'));
}
test()