我应该相信MySQL insertId Node js吗

我正在向数据库中插入大量数据,我想获取生成的ID。 (插入的ID)

我可以使用两个查询1 INSERT和1 SELECT来实现它,但是我想保存SELECT查询,所以我使用的是res.insertId。但是insertId不正确。

也许我遗漏了某些东西或错误地使用了SQL?我应该信任res.insertId吗?

初始化功能。

async function init() {
   await truncateTable();
   await fillDBWithTable();
   const transaction = await startTransaction();
   await makeSecondaryQuery();
   await makeMainQuery(transaction); // <== Main!
   await makeSecondaryQuery();
   await commitTransaction(transaction);
   await makeSecondaryQuery();   
}

makeMainQuery

 function makeMainQuery(transaction) {
const names = [
    ['Itay', 'Main'],
    ['Eyal', 'Main'],
    ['Nir', 'Main'],
    ['Yoram', 'Main'],
    ['Nahum', 'Main'],
    ['Takum', 'Main'],
    ['Yossi', 'Main'],
];

  return new Promise((resolve, reject) => {
    connections.executeMysqlQuery(transaction, `INSERT INTO probedata.Persons (FirstName, LastName) VALUES ?`,
        [names], 'all', function (err, res) {
            if (err) {
                reject(err);
                return;
            }
            const insertedTagsIds = [];
            for (let i = 0; i < names.length; i++) {
                insertedTagsIds.push(res.insertId + i);
            }
            console.log(insertedTagsIds); // <== OUTPUT - Pay attention to this!
            resolve(insertedTagsIds);
        });
});}

makeSecondaryQuery

function makeSecondaryQuery() {
const names = [
    ['PAPA', 'Secondary'],
    ['TATA', 'Secondary']
];

return new Promise((resolve, reject) => {
    connections.executeMysqlQuery('test', `INSERT INTO probedata.Persons (FirstName, LastName) VALUES ?`,
        [names], 'all', function (err, res) {
            if (err) {
                reject(err);
                return;
            }
        });
});

}

控制台输出:[0、1、2、3、4、5、6]

MYSQL输出:

enter image description here

谢谢,伊泰

评论