首页 > 解决方案 > 试图将快速 API 代码移动到控制器文件

问题描述

我在这里遗漏了一些明显的东西。

在我的路由/api文件中,这很好用(我从 mongodb 得到了预期的用户)

const User = require("../../database/models/User");
router.get("/getUsers", async(req, res) => {
  try {
   const users = await User.find();
   res.status(200).json(users)
} catch (error) {
    res.status(404).json({ message: error.message });
}

我正在尝试将此代码移动到控制器文件中。

const getUsers  = require ('./../../controllers/users_controller');
router.get("/getUsers", getUsers);

我将控制器文件导入到 routes/api

const User = require('../database/models/User');
module.exports = () => {
  getUsers = async(req, res) => {

    try {
      console.log ("getting users");
      const users = await User.find();
              
     // res.status(200).json(users);
     console.log("users:", users);
     res.status(200).json(users)
  } catch (error) {
      res.status(404).json({ message: error.message });
  }

  }

当我启动与第一个示例相同的端点时,我在 PostMan 中收到错误读取 ECONNRESET。任何帮助将不胜感激。

标签: node.jsmongodbexpressroutescontroller

解决方案


在控制器中尝试这样

const User = require('../database/models/User');

  const getUsers = async(req, res ,next) => {
    try {
      console.log ("getting users");
      const users = await User.find();
              
     // res.status(200).json(users);
     console.log("users:", users);
     res.status(200).json(users)
  } catch (error) {
      res.status(404).json({ message: error.message });
  }
  }

  exports.getUsers = getUsers;

在路由文件中

const usersController  = require ('./../../controllers/users_controller');
router.get("/getUsers", usersController.getUsers);

如果您在控制器中有多个功能:

const User = require('../database/models/User');
 const getUsers = async(req, res ,next) => {
  //do somethings
  }
 const getUserById = async(req, res ,next) => {
  //do somethings
  }
  exports.getUsers = getUsers;
  exports.getUserById = getUserById;

在路由文件中

const usersController  = require ('./../../controllers/users_controller');
router.get("/getUsers", usersController.getUsers);
router.get("/getUsers/:id", usersController.getUserById);

推荐阅读