Node.js护照设置混乱

时间:2019-04-29 02:16:39

标签: mysql node.js passport.js

我一直在尝试设置Nodejs MySQL数据库配置。我在Github上找到了this MySQL的password.js配置。配置工作正常,但有一部分我不理解。

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字段感到困惑。我正在使用的表没有名为insertID的字段。但是,它确实有一个名为ID的字段。我尝试将该行更改为

newUserMysql.id = rows.Id;

bu这样做给了我

  

错误:无法将用户序列化为会话

保持原样不会给我任何错误

好像insertID与表的ID字段无关,但我不明白它的含义

1 个答案:

答案 0 :(得分:2)

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

INSERT的响应不是“行”,而是结果对象,因此最好将其命名为:

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内,其中包含Promise驱动的数据库库,例如Sequelize。您不会在第一种情况下处理潜在的错误。在第二个步骤中,您将获得异常,这些异常将在出现问题时将您唤醒。