sql - 如何连接到数据库并从nodejs中的多个表中获取数据?
问题描述
我创建了一个到数据库的连接,其中有许多与主题相关的表(例如:-subject1、subject2、subject3 ...)。
每个主题表都有两列,它们是“IndexNo, Result”。我想获得与相同索引号相关的结果。从每个表中(一个学生对许多科目的结果)并将其推送到一个数组中。怎么做?
这是我的代码,它返回许多错误。
const mysql = require('mysql');
var connect = mysql.createConnection({
host:'localhost',
user:'root',
password:'',
database:'results_center'
});
var studentid = 1234;
var results = [];
var i =0;
for(i=1;i++;i<8){
var newResult;
connect.query("select result from subject"+i+" WHERE Index_No = " + studentid,(err,result)=>{
newResult = result;
});
results[i] = result;
}
connect.end()
console.log(results);
解决方案
将回调转换为 Promise 并使用 Promise.all 获取所有结果。
const util = require('util');
const query = util.promisify(connect.query);
var i = 0;
var promises = [];
for(i=1;i++;i<8){
promises.push(query("select result from subject"+i+" WHERE Index_No = " + studentid));
}
Promise.all(promises).then(results => {
connect.end()
console.log(results);
})
推荐阅读
- r - 制作稀疏矩阵时缺少列 (R)
- python - 设置相同的小部件实例不起作用
- android - 为什么组件不显示在 Android Studio 的设计模式中?
- python-3.x - 自定义卷积与 pytorch conv2d 结果之间的差异?
- java - 制作清单的最佳方式
> 到列表,在 java中列出 - objective-c - UIDatePicker 仅在最后一个 Uitableviewcell 上替换键盘
- css - 为什么 word-break 或 word-wrap 或 overflow-wrap 在我的 CSS 中工作?我究竟做错了什么?
- python - 突出显示 Jupyter 单元中的部分代码
- html - 你能把一个字体很棒的图标放在一个之前,它已经在选择器上有一个 ::before 类吗?
- android - React Native 错误:Haste 模块映射中不存在模块`ProgressBarAndroid`