Nodejs 护照设置混乱

Nodejs passport setup confusion

我一直在尝试设置我的 Nodejs MySQL 数据库配置。我在 Github 上找到 this passport.js MySQL 配置。配置正常,但有部分我不明白。

var insertQuery = "INSERT INTO users ( email, password ) values ('" + email +"','"+ password +"')";
                    console.log(insertQuery);
                connection.query(insertQuery,function(err,rows){
                newUserMysql.id = rows.insertId;

                return done(null, newUserMysql);
                }); 

我对 insertID 字段感到困惑。我正在使用的 table 没有名为 insertID 的字段。但是它确实有一个名为 ID 的字段。我尝试将该行更改为

newUserMysql.id = rows.Id;

bu 这样做给了我:

Error: Failed to serialize user into session

保持原样不会出现错误

看起来 insertID 与我 table 的 ID 字段无关,但我不明白它是什么意思

这可能代表 LAST_INSERT_ID() 这是插入的最后一行的 ID。

INSERT 的响应不是 "rows" 而是一个结果对象,所以最好将其命名为:

connection.query("...", function(err, result) {
  newUserMysql.id = result.insertId;

  return done(null, newUserMysql);
});

请务必注意,使用 Promises 可以显着简化您的代码,async/await 可以进一步简化代码。这可以很简单:

let result = await connection.query("...");

newUserMysql.id = result.insertId;

return newUserMysql;

它位于 async function 中,其中包含像 Sequelize 这样的 Promise 驱动的数据库库。您没有处理第一种情况下的潜在错误。在第二个中你会得到异常,当出现问题时它会唤醒你。