Чтобы предотвратить обновление страницы при отправке формы, вам нужно будет использовать event.preventDefault();
. Я считаю, что то, что вы пытаетесь достичь, состоит в следующем:
Как подробно описано в коде комментария ниже, ваш журнал находится после вашего возвращения и поэтому никогда не будет выполнен.
Также вы не использовали await в асинхронной функции, поэтому либо не делайте ее асинхронной, либо используйте await.
csv.upsert = async function (values, condition) {
const obj = await csv.findOne({ where: condition });
// you can await here, no need for then as you are in an async function
if (obj) { // update
// you need to log before your return condition
console.log("existing record updated")
return obj.update(values);
// since we return here, the rest of the code will not be executed
// you can skip the use of else
}
// we are in this part of the code only if object is falsy
// insert
console.log("new record inserted")
return csv.create(values);
}
Вы также можете использовать Promise.all
, чтобы убедиться, что все upsert выполнены:
await Promise.all(dataToBeInserted.map(async function (data) {
let condition = {
'categorygroup': data.categorygroup,
'category': data.category,
'country': data.country,
'city': data.city
};
await csvModel.upsert(data, condition);
}))
это также гарантирует, что в случае возникновения ошибки она будет перехвачена вашим try / catch
Может быть, это поможет вам найти причину неожиданного поведения.