#javascript #node.js #express #parameters #sequelize.js
Вопрос:
Я работаю над секвенированием и маршрутизацией в Express, и мне нужно работать как с REST api, так и с базой данных. В этом случае я использую UUIDV4, чтобы установить свой идентификатор на моей модели покемона:
ID: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, allowNull: false},
И я привожу из api покемонов и использую запрос. Моя проблема заключается в попытке вывести покемонов по идентификатору либо из api, либо из БД. Когда я вызываю по идентификатору покемонов из api, у которого есть числовой номер, у него нет проблем, но когда я пытаюсь позвонить по идентификатору в моей БД, кажется, что он просто читает, что идентификатор не существует. Я попытался решить с помощью условного, который, если мой идентификатор не числовой, он должен получить доступ к базе данных, но, похоже, он не работает.
Я был бы признателен за любой намек или совет к моему коду, спасибо.
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`);
}
}
}
});```