首页 > 解决方案 > 无法从我的数据库 Sequelize-Express 带来 ID

问题描述

我正在使用 Express 上的 Sequelize 和路由,我需要同时使用 REST api 和 DB。在这种情况下,我使用 UUIDV4 在我的口袋妖怪模型上设置我的 ID:

ID: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, allowNull: false},

我从 api 带来 Pokemons 并使用请求。我的问题是尝试通过 ID 从 api 和 DB 获取 Pokemons。当我通过 id 从 api 调用 Pokemons 时,它有一个数字,它没有问题,但是当我尝试在我的数据库中通过 id 调用时,它似乎只是读取 ID 不存在。我试图用一个条件来解决,如果我的 ID 不是数字,它应该访问数据库,但它似乎不起作用。

我将不胜感激对我的代码的任何提示或建议,谢谢。

router.get("/:id", async function PokemonID(req, res) {
    const { id } = req.params;
    if (id) {
      if (typeof Number(id) === "number") {
        try {
          const ASH = await axios.get(`https://pokeapi.co/api/v2/pokemon/${id}`);
          let obj = {
            ID: ASH.data.id,
            name: upperFirst(ASH.data.name),
            hp: ASH.data.stats.find((e) => e.stat.name === "hp").base_stat,
            attack: ASH.data.stats.find((e) => e.stat.name === "attack")
              .base_stat,
            defense: ASH.data.stats.find((e) => e.stat.name === "defense")
              .base_stat,
            speed: ASH.data.stats.find((e) => e.stat.name === "speed")
              .base_stat,
            height: ASH.data.height,
            weight: ASH.data.weight,
            image: ASH.data.sprites.other.dream_world.front_default,
            created: false,
            type: ASH.data.types.map((e) => upperFirst(e.type.name)),
          };
          return res.json(obj);
        } catch (error) {
          res.status(400).send("ID NOT EXISTS");
        }
      } if(typeof Number(id) !== "number") {
        try {
          let query = await Pokemon.findByPk(id, {
            include: { model: Type },
          });
           res.json(query);
        } catch (error) {
          res.status(400).send(`No ID ${id} on DB`);
        }
      }
    }
  });```
 

标签: javascriptnode.jsexpressparameterssequelize.js

解决方案


推荐阅读