Conroller无法将响应传递给index.js

问题描述 投票:1回答:1

我是新来的。对于类似的问题,已经发布了几种解决方案,但是没有一个有帮助。我在下面发布了一个非常简单的玩具示例,可以帮助您进行调试。

下面是代码

index.js

const express = require('express')
port=3001

var controller = require('./controller');
app.use('/api', controller);

controller.js

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

router.get('/bl', function(req, res) { 
    model.getData( function (err, objects) {
        if(err) return res.send(err);
        return res.status(200).json(objects);
    });
});

module.exports = router;

model.js

const bl = {"hello":"world"}
const getData= (request, response) => {
    return(bl);
  }

module.exports = {
  getData
}

问题:正在调用:http://localhost:3001/api/bl =>无响应,控制台:没有错误

注意:在我的model.js中,我正在Postgres数据库中查询,并且可以在console.log中看到结果。但是当我尝试在controller.js中使用console.log查看数据时,我看不到任何此类结果。我在上面的玩具示例中观察到类似的行为

node.js express
1个回答
0
投票

[您需要第三个参数,您通常会看到callback或只是cb,然后在函数中执行它并将一些数据传递给它。之后,第一个参数false将成为错误参数,而bl将成为所传递的objects参数

const getData= (request, response, callback) => {
    callback(false, bl);
  }

然后将reqres参数传递给它:

model.getData(req, res, function (err, objects) {
    if(err) return res.send(err);
    return res.status(200).json(objects);
});
© www.soinside.com 2019 - 2024. All rights reserved.