Как получить последний вставленный IDS множественной вставки в Knex.js? - PullRequest
0 голосов
/ 09 июня 2019

Мне нужно получить все последние вставленные IDS при одновременной вставке нескольких записей, но сейчас я получаю только один ID.

const data = await querybuilder('surveyresponse').insert(varList)

Вывод:

[183]

Ожидаемый вывод:

[183,184,185]

1 Ответ

0 голосов
/ 09 июня 2019

MySQL сам по себе не возвращает эту информацию, поэтому Knex.js также не возвращает ее. Из документов:

// Returns [2] in "mysql", "sqlite"; [2, 3] in "postgresql"
knex.insert([{title: 'Great Gatsby'}, {title: 'Fahrenheit 451'}], ['id']).into('books')

Вы можете использовать несколько запросов (не самый эффективный способ):

const data = await Promise.all(varList.map(item => querybuilder('surveyresponse').insert(item)
))

В других сообщениях упоминается LAST_INSERT_ID(), чтобы получить последний, чтобы вы могли получить интервал, но это очень рискованно и подвержено ошибкам при высоком параллелизме.

...