我一直在尝试设置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
字段无关,但我不明白它的含义
答案 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。您不会在第一种情况下处理潜在的错误。在第二个步骤中,您将获得异常,这些异常将在出现问题时将您唤醒。