分离节点和回调中的函数/文件

时间:2015-01-02 17:12:30

标签: node.js express callback

我正在尝试将代码整理到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));
    }); 
});

请帮我构建gen​​eral_functions.js文件中的函数

1 个答案:

答案 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;