【问题标题】:Why is Data not being passed through my Node REST API?为什么数据没有通过我的 Node REST API 传递?
【发布时间】:2021-07-01 03:48:36
【问题描述】:

我有以下代码。

路由/index.js:

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

const weeklyReportsController = require('../controllers/weeklyReportsController');

router.get('/weekly_reports', weeklyReportsController);

module.exports = router;

控制器/weeklyReportsController.js:

const weeklyReportsService = require('../services/weeklyReportsService');

const weeklyReportsController = async (req, res) => {

    try {
        const data = await weeklyReportsService;
        res.json({data})
        console.log('Weekly reports controller - success');
    } catch(err) {
        console.log(err);
    }
};

module.exports = weeklyReportsController;

服务/weeklyReportsService.js:

const Pool = require('pg').Pool

const pool = new Pool({connection data})
const weeklyReportsService = async () => {
    const res = await pool.query('SELECT * FROM reports', (err, results) => {
        if (err) {
            throw err;
        } else {
            console.log('Weekly reports service - success.');
        }
        return res.status(200).json(results.rows);
    });
};

module.exports = weeklyReportsService;

我通过访问 localhost:8080/api/weekly_reports 返回的只是 {} 的空 JSON 对象。我尝试在我的代码中添加一些 console.log() 方法来查看触发了什么和没有触发什么,并且我的服务的日志没有被关闭。我花了几个小时试图挖掘示例代码,阅读文档,老实说只是茫然地看着我的屏幕 - 我只是不知道我在这里做错了什么。

有人对我在这里做错了什么有建议吗?

感谢大家抽出宝贵的时间,如果有什么我可以补充的,请不要犹豫,我会提供。

感谢您的帮助。

编辑:数据位于称为报告的 Postgres 数据库中,该表也称为报告。

【问题讨论】:

  • 你可以试试 const data = await weekReportsService();在你的控制器/weeklyReportsController.js:?
  • @Sohan 我现在让控制台报告,所以朝着正确的方向迈出了一步!但是,现在我被抛出“TypeError:无法读取未定义的属性'状态'。”我检查了 res 的类型,它是未定义的。

标签: javascript node.js node-postgres


【解决方案1】:

你的方法有很多问题 以下是实现目标的方法:

控制器/weeklyReportsController.js:

const weeklyReportsController = async (req, res) => {

    try {
        const data = await weeklyReportsService();
        res.status(200).json({data})
        console.log('Weekly reports controller - success');
    } catch(err) {
        console.log(err);
        res.status(500).json({error: err.message})
    }
};

module.exports = weeklyReportsController;

服务/weeklyReportsService.js:

const Pool = require('pg').Pool

const pool = new Pool({connection data})
const weeklyReportsService = () => {
    return new Promise((resolve,reject) => {
      pool.query('SELECT * FROM reports', (err, results) => {
        if (err) reject(err);
        
        console.log('Weekly reports service - success.');
        resolve(results.rows)
      });
    })
};

module.exports = weeklyReportsService;

一些帮助您入门的链接:
https://expressjs.com/en/api.html#res

https://developer.mozilla.org/en-US/docs/Glossary/Callback_function
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
https://stackoverflow.com/a/64052334/2703813
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

【讨论】:

  • 非常感谢!这里有很多要挖掘的东西,我现在就开始研究它。感谢您的宝贵时间。
  • “很多事情都错了”,其中您没有列出任何内容,表示批评多于建设性答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 2022-01-06
  • 2013-02-06
  • 2022-11-27
相关资源
最近更新 更多