Вставляет дублирующую запись при вставке массивированных данных (KNEXJS и SQLITE3) - PullRequest
0 голосов
/ 07 сентября 2018

Мой код для вставки нескольких записей в базу данных выглядит так:

let model = [
        {
            Question: '1 + 1',
            QuestionTypeId: 1,
            Answer: '2',
            QuizId: 1,
            Options: null
        },
        {
            Question: '1 + 2',
            QuestionTypeId: 1,
            Answer: '3',
            QuizId: 1,
            Options: null
        }
    ]
    let result = knex('Items').insert(model)

но он дважды вставляет данные в базу данных, как это

enter image description here

Может кто-нибудь объяснить мне, почему он добавляет еще 2 строки в базу данных? Спасибо!

1 Ответ

0 голосов
/ 07 сентября 2018

Код, который вы вставили в вопрос, на самом деле ничего не вставляет (построитель запросов никогда не запускается).

Knex не вставляет данные дважды, если вы не попросите их вставить их дважды. Возможно, в коде, который вы не указали в вопросе, вы дважды вызываете .then() для построителя запросов, хранящегося в переменной result.

Это может работать лучше:

let model = [
    {
        Question: '1 + 1',
        QuestionTypeId: 1,
        Answer: '2',
        QuizId: 1,
        Options: null
    },
    {
        Question: '1 + 2',
        QuestionTypeId: 1,
        Answer: '3',
        QuizId: 1,
        Options: null
    }
];

let result = await knex('Items').insert(model);
...