使用Express检索GET查询字符串参数

时间:2019-12-11 00:46:18

标签: node.js api express

我似乎很难在邮递员上获取查询字符串参数。 首先,我想使用以下网址获取所有游戏类型API:

localhost:3000/api/gameType/dota2

这是下面的代码:

const router = require('express').Router();
const GameTypeRepository = require('../../repository/GameTypeRepository');

router.get('/', async (req, res) => {
try {
   const game_types = await GameTypeRepository.findByName(req.query.name);
   res.json(game_types);
 } catch (error) {
   console.log(error);
   res.sendStatus(500);
  }
});

GameTypeRepository.js

  const BaseRepository = require('../../../shared/repository/BaseRepository');
  const GameType = require('../models/GameType');

  class GameTypeRepository extends BaseRepository {
     constructor(model) {
     super(model);
  }

     findByName(name, fields) {
       const options = {
       where: { name }
      };
      if (!!fields && fields) {
      options.attributes = fields;
      }
      return this.model.findOne(options);
    }
  }

  module.exports = new GameTypeRepository(GameType);

但是当我执行邮递员的网址时,我在终端上看到以下日志:

Executing (default): SELECT `id`, `name`, `description` FROM `game_types` AS `game_types` WHERE `game_types`.`id` = 'dota2';

应为'name' = 'dota2'

关于如何使用此功能的任何想法? TYIA。

1 个答案:

答案 0 :(得分:0)

我已经通过在我的router.get('/type/:name,

中添加 / type 解决了这个问题
router.get('/type/:name', async (req, res) => {
try {
const game_types = await GameTypeRepository.findByName(req.params.name);
res.json(game_types);
 } catch (error) {
res.sendStatus(404);
 }
});