JS file not pulling model.findByPk() using "/:id"?

Viewed 24

I'm trying to pull items from my database using each item's id, but am receiving an empty object when running it through Insomnia. For example, in the code below, I would like to pull a category by ID, but also include any associated Products. Any idea what I might be doing wrong? Thank you in advance!

router.get('/:id', async (req, res) => {
  try {
    const oneCategory = await Category.findByPk({
      include: [{ model: Product }]
    });
    // console.log(oneCategory);
    if (!oneCategory) {
      res.status(404).json({ message: 'No category found with that id!' });
      return;
    }
    res.status(200).json(oneCategory);
  } catch (error) {
    res.status(500).json(error);
  }
});

Empty Object in Insomnia

Category Table in DB

1 Answers

When calling the findByPk method, you need to pass the key you are looking for. In this particular case, the code should look like this:

router.get('/:id', async (req, res) => {
  try {
    const oneCategory = await Category.findByPk(req.params.id, {
      include: [{ model: Product }]
    });

    if (!oneCategory) {
      res.status(404).json({ message: 'No category found with that id!' });
      return;
    }
    res.status(200).json(oneCategory);
  } catch (error) {
    res.status(500).json(error);
  }
});

So just grab the id from the URL with req.params.id and pass it to findByPk. However, it could be a good idea to check so that the id is in fact an integer before doing so :)

Related