2016-10-20 1 views
1

私はnodejsを初めて使っていますが、これはかなり簡単かもしれませんが、約束を返す関数からデータを取得するのに問題があります。ミドルウェアからの応答がフロントエンドに返されます。ここに私のコードです約束事からミドルウェアにデータを返す

// middleware 
app.get('/player', function(req, res) { 
      //data i want to return 
    res.send(getPlayerStats.getPlayerId(req.query.name))); 
}); 

//getPlayerStats.js 
var getPlayerId = function(name) { 
    return start(name) 
     .then(getPlayerInGame) 
     .then(getPlayerStats) 
     .then(getPlayers); 
    //.then(sendToSingular) 
} 

//getplayers function 
var getPlayers = function(data) { 
    return data; 
} 

私は間違った方法でデータを送っていますか?フロントエンドで見る応答は、唯一のプロパティとしてプロトタイプを持つオブジェクトです。私はgetPlayers()のデータを印刷することができ、それは正常に動作して参照してください。

+0

あなたが後で結果を返す非同期メソッドの 'res.send'を呼び出すことはできません、あなたは – adeneo

答えて

3

これは、あなた自身が約束をres.sendに渡しているからです。あなたは何をすべき

res.send(/* You are passing a promise here */); 

データを解決するための約束を待ってから、そのデータを送っている:

getPlayerStats.getPlayerId(req.query.name).then(function(data) { 
    res.send(data); 
}); 
+0

おかげnem035非同期メソッドのコールバックの内側に送信する必要があります!私はそれをし、それは動作します! – inhaler

+0

@inhaler問題ないamigo、喜んで助けてください。ここにいくつかの便利なリソース([this one](http://stackoverflow.com/documentation/javascript/231/promises#t=201610202030578009337)と[this one](https://developer.mozilla.org/en-US)があります。/docs/Web/JavaScript/Reference/Global_Objects/Promise))約束の詳細を学ぶ – nem035

0

あなたがミドルウェアを書くとき、あなたがプレイヤーIDは、のために利用できるようにしたいように聞こえます

app.get('/player/*', function(req, res, next) { 
      //data i want to return 
    getPlayerStats.getPlayerId(req.query.name))).then(function(id){ 
     res.locals.playerId = id; 
     next(); 
    }); 
}); 


app.get('/player/action', function(req, res){ 
    res.send(res.locals.playerId); //or use it for further processing 
}); 
+0

私はこのプロジェクトの他の部分で作業を開始すると、間違いなく非常に便利です。どうもありがとう!! – inhaler

1

そして、私はいつも必ずエラーを作るためにcatch()とあなたの約束のチェーンを終了することをお勧めします処理されます:ここでは他のコメントに加えて、他のアクション

getPlayerStats.getPlayerId(req.query.name) 
    .then(function(data) { 
    res.send(data); 
    }) 
    .catch(function(error){ 
    res.status(500).send('Some error text'); 
    }); 
関連する問題