我想查询数据库中,我对工作项目的快速和MySQL服务器响应用于教学和培训用户。我有根据用户(例如医生)的两个型诺言,一个询问的问题(和它们的question_ids)的数据库,然后接下来的查询需要的questions_ids,并选择相应的答案和answer_ids的问题。代码如下所示:不发送所有需要的数据
var express = require('express');
var mysql = require('mysql');
var path = require('path');
var async = require('async')
var app = express();
var connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "123456",
database: "myDB"
})
app.set('port', 3001);
var questions = [];
var question_ids = [];
var answers = [];
var answer_ids = []
app.get('/training/:user_type', function (req, res) {
var user_type = req.params.user_type // gets the value for the named parameter user_id from the url
var sql_command_1 = "SELECT * FROM questions WHERE type = ?"
var sql_command_2 = "SELECT * FROM answers WHERE question_id = ?"
function getQuestions() {
return new Promise((resolve, reject) => {
connection.query(sql_command_1, user_type, function (error, results) {
for (i = 0; i < results.length; i++) {
questions.push(results[i].question_text);
question_ids.push(results[i].question_id);
}
resolve({questions: questions, question_ids: question_ids});
})
})
}
function getAnswers(question_ids) {
console.log(question_ids)
return new Promise((resolve, reject) => {
for (i = 0; i < question_ids.length; i++) {
connection.query(sql_command_2, question_ids[i], function (error, results) {
for (i = 0; i < results.length; i++) {
answers.push(results[i].answer_text);
answer_ids.push(results[i].answer_id);
}
console.log(answers);
console.log(answer_ids);
resolve({answers: answers, answer_ids: answer_ids});
});
}
});
}
getQuestions().then((result) => {
console.log(result);
return getAnswers(result.question_ids);
}).then((result) => {
res.json({"Type": user_type, "Questions": questions, "Answers": answers});
});
});
app.listen(app.get('port'));
我预期的响应是医生为USER_TYPE,对于“问题”等8个答案在“答案”两个不同的问题(四个答案为每个不同的问题)。不过,我只得到了第一个问题,不是四个第二的四个答案。我看过了代码,看着异步执行,但似乎无法找到我的问题。
@codtex是对的,他们的代码更加高效:) –
作为一名程序员,您自己找到了解决方案,这是一个非常好的信号。我只是想把你的想法指向另一个更高效的方法,我很高兴你明白它的工作原理:)干得好! – codtex