【问题标题】:How can I organize my routes better in nodejs & express?如何在 nodejs & express 中更好地组织我的路线?
【发布时间】:2018-02-05 18:14:54
【问题描述】:

我想说,目前我的 WebAPI 代码非常模块化。但我希望它更多。

我有这个包含所有路由的 server.js 文件,我想将它们拆分为单独的控制器。关于如何做到这一点的任何想法?这是一个例子:

app.get('/users/me', authenticate, (req, res) => {
    res.send(req.user);
});

我的 server.js 文件中有很多这样的路由。我将如何使用我的用户路由创建一个 user-routes.js 文件?也适用于我设置的所有其他收藏路线。

app.post('/firm', authenticate, (req, res) => {
    var firm = new Firm({
        name: req.body.name,
        number: req.body.number,
        _creator: req.user._id
    });

    Firm.findOne({
        number: req.body.number,
        _creator: req.user._id
    }).then(firmFound => {
        if (firmFound) {
            return res.status(400).send({
                message: 'Firm with that name or number already exists.'
            })
        }
        firm.save().then((firm) => {
            res.send(firm);
        }, (e) => {
            res.status(400).send(e);
        });

    });
});

【问题讨论】:

  • Mongodbs findOneAndUpdate 可能是你的朋友 /firm
  • 这条路线是为了创建一家新公司。使用 findOne() 我正在检查是否有具有该号码的公司,如果有我正在抛出状态(400),如果没有我继续保存文档。我对猫鼬还是很陌生,所以我可能错了! findOneAndUpdate 在这里有什么用处?
  • 哦,没关系,没看出这是猫鼬。代码很好:)

标签: javascript node.js express routing


【解决方案1】:

在子文件上,例如users.js你可以定义一个新的Router

const users = Express.Router();

users.get("/me", () => "whatever");

module.exports = users;

这适用于您的所有子路由,甚至是子子路由。 然后在更高的实例上,您只需将这些子路由挂载到它们的路径下(例如 server.js):

app.use("/users/", require("users.js"));

【讨论】:

  • 谢谢!正是我想要的:)
  • @filip 很高兴为您提供帮助 ;)
猜你喜欢
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 2022-10-26
相关资源
最近更新 更多