Предположим, у меня есть таблица с именем Item с полем с именем "name".Существует уникальное ключевое ограничение на поле имени.Почему эти две функции ведут себя по-разному, вызывая их с помощью await?Разница лишь в том, что один ждет, прежде чем уничтожить предмет, а другой возвращает обещание уничтожения.Разве эти виды использования не должны быть идентичными?
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()