Sequelize 不更新表中的行
Posted
技术标签:
【中文标题】Sequelize 不更新表中的行【英文标题】:Sequelize not updating a row in table 【发布时间】:2020-07-11 18:28:53 【问题描述】:我是第一次使用 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
]
我还可以在数据库中看到该行尚未更新。 我在这里做错了什么,如何更新表格中的一行并返回新的更新值?
【问题讨论】:
【参考方案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);
【讨论】:
但是,我想知道为什么我自己运行更新时行没有更新 看起来你的代码一切正常,它必须更新数据库中的记录以上是关于Sequelize 不更新表中的行的主要内容,如果未能解决你的问题,请参考以下文章
续集如何查找具有多个 where 子句和时间戳的行 > NOW()