gpt4 book ai didi

MySQL 查询值不会传递到 ejs 文件。查询取决于先前查询的结果

转载 作者:行者123 更新时间:2023-11-29 15:39:54 27 4
gpt4 key购买 nike

我正在开展一项动态调查。他们的调查问题是从给定调查 GUID 的数据库中提取的。然后,根据从上面的查询中提取的每个问题的 QuestionGUID,从数据库中提取用于每个问题的答案。我似乎无法将问题答案值传递到我的 ejs 文件中。

我认为这与查询函数的异步性质有关,但我已经尝试了在此处找到的多种解决方案。

我的route.js

function router() {
// survey start page
surveyRouter.get('/', function(req, res){
var prms = req.query;
res.render('surveyIndex', {prms:prms})
});

surveyRouter.get('/:surveyGuid', function(req, res){
//empty array to put values in
var questionValues = [];
function storeQuestionValues(rows){
questionValues= rows[0];
// console.log(questionValues);
}

//surveyGUID hard coded into HTML link href
//gets questions to use in ejs
connection.query("CALL spGetSurveyQuestions(?);", req.params.surveyGuid, (err, rows, fields) => {
if(err) throw err;

//all questions
var questions = rows[0]

questions.forEach(function(question){
//push results of stored procedure that gets question values by question GUID into empty array
connection.query("CALL spGetSurveyQuestionValues(?);", question.QuestionGuid, (err, rows, fields) => {
storeQuestionValues(rows);
// console.log(questionValues);
});
});
res.render('test', {questions : questions, questionValues : questionValues });
});
});

return surveyRouter;
}

我的测试 ejs 文件

  <%include partials/header%>

<div id="masthead" class="container">
<div class="row py-2">
<div class="col-md-12">
<h1 class=text-center> Satisfaction Survey</h1>
</div>
</div>
</div>

<form>
<div class="containter">
<div class="col-md-12">
<%questions.forEach(function(question){%>
<label><%= question.QustionSequence %>. <%= question.QuestionText %> </label></br>
<% questionValues.forEach(function(questionValue){%>
<p> <%= questionValue.AnswerText%></p>
<%});%>
<%});%>
</div>
</div>
</form>


<%include partials/footer%>

如果将 res.render() 移动到第二个查询函数中,我会收到 header 错误,但第一个问题的问题值出现在每个问题下。所以至少它会吐出一些东西。

现在我只是想从问题值查询中的每个问题下打印任何内容,并担心稍后什么值与什么问题相匹配。

最佳答案

通过抽出一些时间并想出一些更聪明的东西,我能够取得进步。

  surveyRouter.get('/:surveyGuid/:questionSequence', function(req, res){
var questionSequence = req.params.questionSequence;
connection.query("CALL spGetSurveyQuestions(?);", req.params.surveyGuid, (err, results, fields) =>{
var questions = results[0];
if(questions[questionSequence - 1].QustionSequence == questionSequence){
connection.query("CALL spGetSurveyQuestionValues(?);", questions[questionSequence - 1].QuestionGuid, (err, results, fields) =>{
var questionValues = results[0];
res.render('test', {questions: questions, questionSequence: questionSequence, questionValues: questionValues});
});
}
});
});

关于MySQL 查询值不会传递到 ejs 文件。查询取决于先前查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57792261/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com