Продолжить не обновлять строку в таблице - PullRequest
1 голос
/ 11 июля 2020

Я использую sequelize впервые. У меня есть таблица под названием feed в моей БД со столбцами ID, caption и url. В моем контроллере у меня есть простая функция, при которой я обновляю строку в таблице:

router.patch('/:id', 
    requireAuth, 
    async (req: Request, res: Response) => {
        let { id } = req.params;
        const item =  await FeedItem.update({ ...req.body }, {
            where: {
              id: id
            }
        });
        if (item === null) {
            return res.status(404).send({ message: 'Feed not found' });
        }
        res.send(item);
});

Я отправляю json тело, которое выглядит так:

{
    "caption": "NewTest",
    "url": "Newtest.jpg"
}

Я вижу эти данные отправляются правильно в консоли, но когда я отправляю в конечную точку с идентификатором 2, я получаю в качестве ответа:

[
    1
]

Я также вижу в БД, что строка не был обновлен. Что я здесь делаю не так, как мне обновить строку в таблице и вернуть новое обновленное значение?

1 Ответ

0 голосов
/ 11 июля 2020

FeedItem.update метод возвращает количество затронутых строк. Вот почему вы получаете 1. Если вам нужен сам экземпляр FeedItem, вы можете сначала получить его и обновить экземпляр:

let feedItem = await FeedItem.findById(id);
if (!feedItem) {
   return res.status(404).send({ message: 'Feed not found' });
}
feedItem = await feedItem.updateAttributes(req.body);

return res.send(feedItem);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...