0
我試圖組織在3個文件分離功能/節點文件和回調
- basic_routes.js
- general_functions.js
- db_queries.js
讓我的代碼對於GET
請求,我可以使用結果行進行響應。我簡直無法將自己的頭圍繞回調函數。如何將結果行返回給客戶端?
文件:db_queries.js
function getUserData (userId, fn){
client.query("select * from participationTable where ? in (userId1, userId2)", userId, function(err,rows){
if (err) {
return fn(new Error('(customError) unable to find ongoing games'));
} else {
return fn(null, rows);
}
});
}
module.exports.getUserData = getUserData;
文件:general_functions.js
var db = require('./db_queries');
function getUserParticipationDeatils(req, function(err, rows){
db.getUserData(req.user.userId, function(err, rows){
if (err){ return done(err); }
// 'rows' is accessible here
// but how can I send it ?
});
});
module.exports.getUserParticipationDeatils = getUserParticipationDeatils;
文件:basic_routes.js
var general_functions = require('./general_functions');
app.get('/getUserParticipation', function (req, res) {
general_functions.getUserParticipationDeatils(req, function(err, rows){
if (err){ return done(err); }
return res.send(JSON.stringify(rows));
});
});
請幫我結構文件general_functions功能.js
你並不需要在這裏創建自己的匿名回調函數,只是做'db.getUserData(req.user.userId,FN)'; – idbehold
@idbehold同意。這只是爲了演示OP如何處理回調。 –
謝謝你們兩位。另外,你什麼時候在這裏使用'next':'app.get('/ getUserParticipation',function(req,res,next){...}'並且這意味着使用'if(err){return next(err )'而不是'if(err){return fn(err);'? –