Express4 app.get不要等待库电话继续

时间:2015-02-13 14:11:22

标签: node.js express

我有一个快速4节点应用程序,其中包含以下内容。

我的问题是app.get不要等到完成getAllFsRiver的演示并且什么也不返回。

怎么做?

app.js中的

var api1 = require('./routes/api1.js');
app.use(api1) ;

in route / api1.js

*jslint node: true */
'use strict';

var express = require('express');
module.exports = express();
var app = module.exports;
var esclient = require('../lib/esclient') ;

/* GET api vers 1 . */
app.get('/api/1/settings/rivers/fs*', function (req, res) {
    var allriver = esclient.getAllFsRiver() ;
    console.log("route");
    res.json(allriver);

这里在esclient.getAllFsRiver完成执行之前调用res.json

4 个答案:

答案 0 :(得分:1)

我的猜测是getAllFsRiver是异步的,可能需要回调。您应该将回调传递给函数并在回调中处理响应。

esclient.getAllFsRiver(function (err, json) {
    if (err) {
        return res.status(500).end();
    }
    res.json(json);
});

答案 1 :(得分:0)

抱歉,我无法添加评论。您可以在问题中添加 getAllFsRiver 实施吗?也许是异步电话。

答案 2 :(得分:0)

你必须写下你的路线:

*jslint node: true */
'use strict';

var express = require('express');
var router  = express.Router();

router.get('/api/1/settings/rivers/fs*', function (req, res) {
    var allriver = esclient.getAllFsRiver() ;
    console.log("route");
    res.json(allriver);
   /* ... */
})

module.exports = router;

在您编码的代码中,您从新的快递应用程序中导出错误的

答案 3 :(得分:0)

向main函数添加回调。的