Node.js对接MySQL开发时如何将查询得到的字段值存入变量
你使用的Node.js MySQL驱动返回的results是查询命中的行组成的数组,每个元素对应一行数据,字段就是你SQL里查询的列名。你要取userID的话直接取第一个元素的userID属性即可。
修改后的代码如下:
db.query('Select userID FROM users WHERE userEmail = ?', email, (error, results) => { if (error) { console.log(error); return; // 出错直接终止后续逻辑 } // 有命中结果时取第一个条目的userID,否则为undefined var userID = results[0]?.userID; if(userID !== undefined) { db.query('INSERT INTO accounts SET ?', {users_userID: userID, accountType: 'Checking', accountBalance: 100}, (error, results) =>{ console.log('creating checking'); if (error) { console.log(error); } }); db.query('INSERT INTO accounts SET ?', {users_userID: userID, accountType: 'Savings', accountBalance: 100}, (error, results) =>{ console.log('creating savings'); if (error) { console.log(error); } }); } });
补充优化建议:
- 如果你运行环境不支持可选链操作符
?.,可以改成var userID = results.length > 0 ? results[0].userID : undefined,效果完全一致 - 两个账户的插入操作建议包在数据库事务里,避免出现Checking账户创建成功、Savings创建失败的业务数据不一致问题
- 可以给users表的userEmail字段加唯一索引,保证查询结果最多只有一条,避免出现多用户同邮箱的异常情况
内容的提问来源于stack exchange,提问作者nathan rivera
相关产品推荐
相关产品推荐

