Sequelize: обновляются только последние несколько строк

Чтобы предотвратить обновление страницы при отправке формы, вам нужно будет использовать event.preventDefault();

. Я считаю, что то, что вы пытаетесь достичь, состоит в следующем:

Здесь - код на Песочнице .

0
задан ro ko 20 January 2019 в 16:32
поделиться

1 ответ

Как подробно описано в коде комментария ниже, ваш журнал находится после вашего возвращения и поэтому никогда не будет выполнен.

Также вы не использовали 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

Может быть, это поможет вам найти причину неожиданного поведения.

0
ответ дан kigiri 20 January 2019 в 16:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: