首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Node.js在Express.js中定制不同查询的get方法?

如何用Node.js在Express.js中定制不同查询的get方法?
EN

Stack Overflow用户
提问于 2019-08-21 18:13:27
回答 3查看 49关注 0票数 0

我目前正在使用Node.js和Express.js构建一个REST API,并且我对这项技术非常陌生。下面的代码显示了存储在MongoDB中的委员会列表的get方法。

代码语言:javascript
复制
const { Council } = require('../mongoose-models/council');
const express = require('express');
const router = express.Router();

router.get('/', async (req, res) => {
  const query = req.query;
  const councilsList = await Council.find(query);

  if (!councilsList) return res.status(404).send('No councils found.');
  res.send(councilsList);
});

module.exports = router; 

根据我以前使用java开发REST API的经验,我可以通过实现具有不同路径的不同方法来定制不同的查询。例如:

代码语言:javascript
复制
@Path("findByCouncilName/{councilName}")
代码语言:javascript
复制
@Path("findCouncilsNotInMyArea/{longitude}/{latitude}")

在每个方法中,我可以编写不同的逻辑。然而,在Express.js中,似乎我必须在一个块中实现所有这些不同的逻辑。它看起来不灵活,怎么才能真正实现呢?此外,查询是否必须与MongoDB中的键名相同?如果我想根据文档中嵌套数组中指定的index元素来过滤结果,该怎么办?

EN

回答 3

Stack Overflow用户

发布于 2019-08-21 18:33:52

对于您的路由:

@Path("findByCouncilName/{councilName}") @Path("findCouncilsNotInMyArea/{longitude}/{latitude}")

如果你要在express中实现它们,你实际上可以把它们分成不同的块。

您可以尝试这样做,而不是听'/'并尝试处理内部的所有事情。

代码语言:javascript
复制
const express = require('express');
const router = express.Router();

router.get('/findByCouncilName/:councilName', async (req, res) => {
  const councilName = req.params.councilName;

  // Your logic goes here

  res.send();
});

router.get('/findCouncilsNotInMyArea/:longitude/:latitude', async (req, res) => {
  const longitude = req.params.longitude;
  const latitude = req.params.latitude;

  // Your logic goes here

  res.send();
});

module.exports = router; 
票数 2
EN

Stack Overflow用户

发布于 2019-08-21 18:23:15

你可以像这样使用它:

代码语言:javascript
复制
router.get('/:councilName', async (req, res) => {

然后使用路由中的参数:

代码语言:javascript
复制
req.params.councilName
票数 1
EN

Stack Overflow用户

发布于 2019-08-21 18:36:41

Express文档是您的朋友

https://expressjs.com/en/guide/routing.html

以下是您应该了解的关于快速路由的所有内容。您可以为每个pat-method对指定单独的逻辑,并根据需要再次使用通用逻辑。

你需要知道Express解析它们的路径顺序,例如。将执行第一个要匹配的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57589334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档