mysql - 如何在带有异步和池的 Node 中使用 Mysql2 为 MySQL 获取 insertId?

标签 mysql node.js async-await connection-pooling mysql2

我正在尝试将 async await 与 mysql2 和 pooling 一起使用,但我认为我做错了。下面是我的代码(正如我所说,我不确定我是否在这里做事)。

    const pool = mysql.createPool({
      host: 'localhost',
      user: 'root',
      database: 'test',
      password: '',
      waitForConnections: true,
      connectionLimit: 10,
      queueLimit: 0
    });
    
    const promisePool = pool.promise();   // Get a Promise wrapped instance of that pool   
    

app.post('/api/register', (req, res) => {

    async function queryDB() {
    
        try {
          const addUser = await promisePool.execute(
            "INSERT INTO users (company, email, password) VALUES (?,?,?)",
            ['Ikea', 'Ikea@ikea.com', '123'],
          )
          const addAnother = await promisePool.execute(
            "INSERT INTO users (company, email, password) VALUES (?,?,?)",
            ['Google', 'Google@google.com', '123']
          )
    
          console.log(addUser)
          res.status(200).json('Users saved')
          
        } catch (err) {
          console.log(err)
          res.status(409).json('User already exist')
        };
      }
    
      queryDB();
})
思路是“addUser”要保存,如果不是唯一的,会报错(因为SQL数据库email列设置为唯一),然后addAnother就不会开始插入了。
我不明白的是如何从 addUser 插入中获取 insertId?我将需要它用于第二次插入。如果我 console.log addUser 我可以看到这样的对象:
ResultSetHeader {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 72,
  info: '',
  serverStatus: 2,
  warn
所以 insertId 被发回给我,但我似乎无法访问它。如果我试图捕获它,它会说无法读取未定义的属性。我觉得我做这一切都错了,那么我应该如何做才能获得 insertID?

最佳答案

结果似乎在一个数组中。我解决了:addUser[0].insertId .我从来没有让 LAST_INSERT_ID() 工作。

关于mysql - 如何在带有异步和池的 Node 中使用 Mysql2 为 MySQL 获取 insertId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65014285/

相关文章:

java - 监控数据库的连接数

php - 插入MySQL数据库时如何忽略空字段?

node.js - FFMPEG:使用具有复杂滤波器的视频滤波器

node.js - Gulp 全局安装

async-await - 使用 ES7 异步函数对 Sequelize 进行未处理的拒绝

c# - 等待在可枚举上使用

javascript - 如何在异步调度完成后执行组件中的方法(thunk 或 Action 创建者)?

MYSQL TIMESTAMPDIFF 函数不起作用

mysql - SequelizeEagerLoadingError : (parent) is not associated to (child)!

node.js - 如何撤消 npm 更新?