2016-11-13 1 views
0

Ich versuche, ein Quiz von Quizfragen zu bekommen und nach dem Erhalt versuchen, eine Reihe von Antworten aus Tabelle Fragen. Aber es funktioniert nichtWie man einen Wert von einer inneren Anfrage erhält. Funktion zurück undefined

Ich sende questionDto (JSON) zu this.add Verfahren, in dem die Frage habe ich bereits in der Tabelle hinzugefügt und müssen Antworten hinzufügen und

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); 
     }); 
    }); 
    }; 

question.getAllByQuizId (QuizId); muss eine Reihe von Fragen zurückgeben. Hier ist eine Implementierung

function Question() { 

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

     con.release(); 

     console.log(JSON.parse(JSON.stringify(rows))); 
     return JSON.parse(JSON.stringify(rows)); 
     }); 
    }); 
    }; 

console.log() gibt geltenden Wert, sondern die Funktion Rückkehr undefined

Ich habe Stunden verschwendet zu bewältigen. Aber immer noch nicht :(

+0

Von dem Sie anrufen ‚question.getAllByQuizId (quizId); ' – Aruna

+0

Von dem ersten Stück, das ich zur Verfügung gestellt (Funktion Quiz()) result.questions = question.getAllByQuizId (quizId); –

+0

Ich habe die unten aktualisiert. Bitte sehen Sie sich die neuesten und ändern Sie Ihren Code entsprechend – Aruna

Antwort

1

Sie sollen einen Rückruf übergeben, dies zu umgehen, anstatt ‚Rückkehr‘, da sie einen asynchronen Block in der Funktion.

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))); 
     }); 
    }); 
    }; 
+0

** quizId ist nicht definiert ** -> hier question.getAllByQuizId (quizId –

+0

Es sieht so aus, als ob Sie quiz.getById hier übergeben. P Überprüfen Sie, warum es nicht definiert ist. – Aruna

+0

Ich habe wie in Ihrem ursprünglichen Code aktualisiert. Bitte überprüfen Sie diese – Aruna

Verwandte Themen