如何获取Knex.js中多个插入的最后插入IDS?

时间:2019-06-09 02:55:32

标签: mysql node.js query-builder knex.js

我需要获取所有最后插入的IDS,同时一次插入多条记录,但是现在我仅获得一个ID。

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

输出:

[183]

预期输出:

[183,184,185]

1 个答案:

答案 0 :(得分:0)

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(var => querybuilder('surveyresponse').insert(var)
))

其他帖子提到LAST_INSERT_ID()来获取最后一个,因此您可以获取时间间隔,但这在高并发中非常危险且容易出错。