我应该相信MySQL insertId Node js吗

时间:2020-05-17 12:24:34

标签: javascript mysql node.js

我正在将大量数据插入数据库,我想获取生成的ID。 (插入的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(); // Parallel Query
   await makeMainQuery(transaction); // <== Main!
   await makeSecondaryQuery(); // Parallel Query
   await commitTransaction(transaction);
   await makeSecondaryQuery(); // Parallel Query
}

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

谢谢,伊泰。

0 个答案:

没有答案
相关问题