javascript - 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"
}
我看到数据在控制台中正确发送,但是当我发布到 id 为 2 的端点时,我得到了响应:
[
1
]
我还可以在数据库中看到该行尚未更新。我在这里做错了什么,如何更新表中的一行并返回新的更新值?
解决方案
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);
推荐阅读
- ruby - 如何在 ruby 中实例化或克隆/包装模块?
- spring-boot - 为什么 Filebeat 没有在 kubernetes 中记录我的 Spring Boot 应用程序
- typescript - 联合类型上不存在 Typescript 属性
- javascript - 当我用 ajax 加载链接时,在 href onclick 上返回 false 仍然调用链接
- java - 即使EXCEL java POI Apache中的空行也将数据保存到表中并将其保存到数据库中
- angular - 角度占位符选项?
- gulp - 如何在 gulp 4 上继续观看我的任务?
- angular - 如果元素在另一个数组中以角度匹配,如何推送数组的元素?
- mongodb - 通过 MongoDB .Net 驱动程序查询的评论?
- java - java中的“”是什么意思?