如何从内部请求中获取价值。函数返回undefined

时间:2016-11-13 00:13:14

标签: mysql node.js

我试图从表格测验中获得测验并获得它 尝试从表格问题的一系列答案。但它不起作用

我将questionDto(JSON)发送到 this.add 方法,问题我已经在 添加在表格中,需要添加答案和

char space[65536][256];

question.getAllByQuizId(quizId); 必须返回一系列问题。这是一个实现

var question = require('../models/question');

function Quiz() {
  this.getById = function(quizId,res) {
    connection.acquire(function(err, con) {
      con.query('select * from quizes where `id` = ? ', quizId, 
  function(err, result) {
        con.release();
        result.questions = question.getAllByQuizId(quizId);
        res.send(result);
      });
    });
  };

console.log()返回适用的值,但函数返回undefined

我浪费了几个小时来解决问题。但仍然可以:(

1 个答案:

答案 0 :(得分:1)

你应该传递一个回调来处理这个而不是'return',因为它在函数中有一个异步块。

var question = require('../models/question');

function Quiz() {
  this.getById = function(quizId,res) {
    connection.acquire(function(err, con) {
      con.query('select * from quizes where `id` = ? ', quizId, 
  function(err, result) {
        con.release();
        question.getAllByQuizId(quizId, function(err, data){
           if(err) {
              throw err;
           } else {
              result.questions = data;
              res.send(result);
           }
        });
      });
    });
  };

function Question() {

  this.getAllByQuizId = function(quizId, callback) {
     connection.acquire(function(err, con) {
       con.query('select * from questions where `quizId` = ? ', quizId, function(err, rows) {
        if (err) callback(err);

        con.release();

        console.log(JSON.parse(JSON.stringify(rows)));
        callback(null, JSON.parse(JSON.stringify(rows)));
      });
    });
  };