首页 > 解决方案 > 使用 Express 检索 GET 查询字符串参数

问题描述

我似乎在我的邮递员上获取查询字符串参数时遇到了麻烦。首先,我想通过以下网址获取所有游戏类型 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);

但是当我执行邮递员的 url 时,我在终端上得到这个日志,上面写着:

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

应该是哪个'name' = 'dota2'

关于如何使用它的任何想法?蒂亚。

标签: node.jsapiexpress

解决方案


我通过在我的添加/type解决了这个问题router.get('/type/:name,

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);
 }
});

推荐阅读