javascript - 无法从我的数据库 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`);
}
}
}
});```
解决方案
推荐阅读
- reactjs - 如何在反应式原生平面列表的文本输入中更改焦点?
- javascript - 缺少 innerHTML 内容
- android - Unity + Mapbox + ARCore __Colliding plugins[arcore_client.aar] 导入 Mapbox SDK 后构建错误
- javascript - 从 URL 地址自动预选下拉值
- git - git 错误:无法读取“https://github.com”的用户名:输入/输出错误
- javascript - 根据电子表格的时区将时间转换为 GMT
- google-api - 将 Google 品牌帐户与内部 OAuth API 项目结合使用
- python - 如何在 python 3.8 的另一个函数中调用一个函数?
- python - 将数组值添加到标识符与其他数组匹配的 numpy recarray
- node.js - Vercel Serverless 功能与 nuxtjs ECONNRESET 客户端网络套接字在建立安全 TLS 连接之前断开连接