我正在尝试将代码整理到3个文件中
因此,对于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文件中的函数
答案 0 :(得分:1)
将getUserParticipationDeatils更改为接受回调fn,就像你的getUserData函数一样。
这样的事情:
var db = require('./db_queries');
function getUserParticipationDeatils(req, fn){
db.getUserData(req.user.userId, function(err, rows){
if (err){ return fn(err); }
fn(null, rows);
});
});
module.exports.getUserParticipationDeatils = getUserParticipationDeatils;