Я изо всех сил пытаюсь использовать Sequilize в Node.js правильно. Я читаю большое количество заказов, создаю из них уникальных клиентов или обновляю клиентов, имеющих несколько заказов. Поэтому для каждого заказа сначала я нахожу, существует ли клиент, создаю клиента, если он не существует, или обновляю клиента, если он есть. Но FindOne не удается найти нового клиента сразу после его создания, поэтому код в итоге пытается создать дублирующих клиентов (что не удается, поскольку customerId должен быть уникальным).
Я проверял, что новые клиенты находятся в процессе созданный в базе данных, просто не вовремя для запроса FindOne (). Есть ли что-то, что я должен сделать, чтобы обеспечить завершение записи новых клиентов в базу данных перед выполнением другого запроса FindOne?
Похоже, что Node накапливает десятки асинхронных c FindOne () запросов одновременно и выполняет Create () для этих заказов только после того, как запросы FindOne завершены для всех из них.
let customer = await CustomerModel.findOne({
where: { customerId: order.customerId }
})
if (customer == null) {
await CustomerModel.create({
customerId: order.customerId,
reorders: 0
});
} else {
customer.reorders += 1;
await customer.save()
}
} catch (error) {
console.log(
"Customer could not be created for id: " + order.customerId + " :" + JSON.stringify(error)
);
}```