2017-05-13 3 views
0

にコールバックを使ってNode.jsの私はvaribalesに値を返すようにしたいので、私はリターンを使用してそのようにそれを書き込もうとしましたが、そのdid't仕事クラス関数

class move { 
    getLastMove(id){ 


     var MoveRequest = "SELECT * FROM users ORDER BY id"; 

     var query = connection.query(MoveRequest, function(err,rows, result) { 
     //console.log('rows', rows.length); 
     if (rows.length == 0) { // evaluate the count 
      return ("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); 
     } 
     if (rows.length > 0) { 
      for (var i in rows) { 


       console.log('getLastMove',id); 
       var move = rows[i].MoveString; 
       if (rows[i].GameId == id){ 

        return move; 
       } 

      } 
     } 



     //console.log("Total Records:- " + result[0].total); 

     }); 


      var move="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; 
      return move; 


    } 


}; 

はので、私はその

のようなコールバックを使用してみました
class move { 

     getLastMove(id){ 


      var MoveRequest = "SELECT * FROM users ORDER BY id"; 

      var query = connection.query(MoveRequest, function(err,rows, result,callback) { 
      //console.log('rows', rows.length); 
      if (rows.length == 0) { // evaluate the count 
       callback ("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); 
      } 
      if (rows.length > 0) { 
       for (var i in rows) { 


        console.log('getLastMove',id); 
        var move = rows[i].MoveString; 
        if (rows[i].GameId == id){ 

         callback(move); 
        } 

       } 
      } 



      //console.log("Total Records:- " + result[0].total); 

      }); 


       var move="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; 
       callback(move); 


     } 


    }; 

が、コールバックの例を実行したときに私はこのエラーを取得

TypeError: callback is not a function

答えて

0

あなたは間違った方法でコールバックを使用しています。 getLastMove()へのコールバックを渡します。

class move { 
getLastMove(id, callback){ 
    var MoveRequest = "SELECT * FROM users ORDER BY id"; 

    var query = connection.query(MoveRequest, function(err,rows, result) { 
     if(err) { 
      return callback(err) 
     } 

     if (rows.length == 0) { // evaluate the count 
      return callback (null, "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); 
     } 
     if (rows.length > 0) { 
      for (var i in rows) { 
       if (rows[i].GameId == id){ 
        callback(null, rows[i].MoveString); 
       } 
      } 
     } 
    }); 
} 

};あなたは、私がVaRの動きをコールバックすることができますどのように多くを説明私に例を与えることができ

var moveObj = new move(); 
moveObj.getLastMove(34, function (err, data) { // 34 is the value of `id` 
    if(err) { 
     // There was some error in execution of getLastMove; var `err` has info regarading that. 
     return console.log("There was some err while executing getLastMove", err); 
    } 

    // If no Error, process your `data` accordingly 
    console.log("Data returned by callback", data); 
}); 
+0

私はここで編集した後も同じ行を返します。\t \t \t return callback(null、rows [i]。 –

+0

カント私はちょうどそのようなこの部分を書く\t \t \t var move = rows [i] .MoveString; \t \t \t if(rows [i]。GameId == ID){ \t \t \t \t \t \t \tリターンコールバック(NULL、移動)。 \t \t \t} –

+0

私はそれを返すように書きましたが、エラーstilはcallback(null、rows [i] .MoveString)です。 –

2
class move { 

     getLastMove(id,callback){ 
      var query = connection.query(MoveRequest, function(err,rows, result) { 
       //do some operation then 
       if (rows.length > 0) { 
        for (var i in rows) { 
         console.log('getLastMove',id); 
         var move = rows[i].MoveString; 
         if (rows[i].GameId == id){ 
          callback(err,move) //<------- 
         } 
        } 
       } 

      }); 
     }     
    }; 

var moveInstance = new move(); 

moveInstance.getLastMove(id,function(err,result){ //code here }) 
+0

と仮定moveObjは次のように機能getLastMoveを呼び出し、タイプmoveの対象ですか? –

+0

私はまだ私の最後の編集getLastMove(ID、コールバック){ \tエラーを取得するvar MoveRequest = "SELECT * FROM users ORDER BY id"; \t VARクエリ= connection.query(MoveRequestコマンド、関数(ERR、行結果){ \t IF(rows.length == 0){ \t \tコールバック(ERR、「rnbqkbnr/pppppppp/8/8/8/KQkq W 8は/ PPPPPPPP/RNBQKBNR - 0 1" ); \t} 場合(rows.lengthは(行のVAR I){ \t \t \t VAR移動=行の> 0){ \t \t [i]は.MoveString ; \t \t \t if(rows [i] .GameId == id){\t \t \t \t \t \tコールバック(エラー、移動); \t \t \t} \t \t \t \t \t \t}} \t})。 \t \t var move = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; \t \tコールバック(エラー、移動); } –

+0

エラーは何ですか?これらの2つのラインは何のためですか? "var move =" rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 "; コールバック(エラー、移動);"あなたは2回以上コールバックを送信しているこれらの行を持っています – node