2017-06-14 31 views
0
triviaCtrl.answer = function(req, res) { 
    //console.log(req.query.name); 
    var data = {}; 
    var pointdata = {}; 
    var datas = { 
    "Status": 0, 
    "Message": "" 
    }; 
    return new Promise((resolve, reject) => { 
    var newAnswer = function(cb) { 
     data.questionId = req.query.questionId; 
     data.userId = req.query.userId; 
     data.correctAnswer = req.query.correctAnswer; 
     data.userAnswer = req.query.userAnswer; 
     data.type = req.query.type; 
     data.point = req.query.point; 
     Answer.create(data, cb); 
    } 
    var checkuserpoint = function(cb) { 
     Point.findOne({ 
     userId: req.query.userId 
     }, function(err, result, cb) { 
     if (result) { 
      result.availablePoint = Number(result.availablePoint) + Number(req.query.point); 
      result.totalWinPoint = Number(result.totalWinPoint) + Number(req.query.point); 
      result.save(cb); 
     } else { 
      pointdata.userId = req.query.userId; 
      pointdata.totalWinPoint = req.query.point; 
      pointdata.redeemPoint = 0; 
      pointdata.availablePoint = req.query.point; 
      Point.create(pointdata, cb); 
     } 
     }); 
    } 

    async.waterfall([newAnswer, checkuserpoint], function(err, result) { 
     if (err) { 
     //reject(err); 
     datas["Status"] = 0; 
     datas["Message"] = err; 
     res.json(datas); 
     } else { 
     datas["Status"] = 1; 
     datas["Message"] = result; 
     res.json(datas); 
     } 
    }); 
    }); 
} 

そこから「newAnswer、checkuserpoint」という関数が削除されていると動作していますが、両方を同時に使用している場合は応答がありません。しかし、以前のfucntionのコールバック非同期コールバックが正しく呼び出されない

に渡さasync.waterfall取る引数に適切

+0

あなたが返す約束を「解決する」または「拒否」することはありません。 – Thomas

答えて

0

第二に、さらに機能をワーキング機能は、第二の機能でarg1arg2を参照してください。

async.waterfall([ 
    function(callback) { 
     callback(null, 'one', 'two'); 
    }, 
    function(arg1, arg2, callback) { 
     // arg1 now equals 'one' and arg2 now equals 'two' 
     callback(null, 'three'); 
    }, 
    function(arg1, callback) { 
     // arg1 now equals 'three' 
     callback(null, 'done'); 
    } 
], function (err, result) { 
    // result now equals 'done' 
}); 
+0

thatsなぜ私は両方の関数を一緒に使うと応答が得られないのですか? – chandar

+0

cb(null、req); newAnswerとcheckuserpointにあります。 if(result) { result.save(cb); cb(null、result); } else { cb(null、pointdata); } これは、新しいエラー "TypeError:cbは関数ではありません。"を返します。 – chandar

関連する問題