在Sequelize.js中更新行的正确方法是什么?
根据文档,我可以同时进行model.update
或instance.update
。
model.update
-仅需要一个数据库调用(我认为),但是它的“批量”更新在有钩子的情况下不好。
instance.update
-您首先需要找到该行,然后可以进行更新,因此该行至少要调用2次。它称为正常的单一更新,而不是批量更新。
我有带CRUD结构的REST API。除了mode.create
之外,其他所有操作都无法完成,这很有意义。但是如何更新。什么是更新一行的正确方法?
还是关于我的需求,这是基于意见的问题?
答案 0 :(得分:0)
好吧,就像您说的那样,更多地取决于您的需求。两种方法都是正确的。从文档中提取instance.update
的第一种方法这与调用set并随后调用save相同,但是它仅保存传递给它的确切值,从而使其更原子且更安全。
这样更安全地更新记录。在您的api上,您可以将parameter
设置为中间件,因此,例如,每次调用update
,findById
和remove
时,始终首先找到实际对象,然后在那里更新或销毁它。
第二种方式model.update
更新与where选项匹配的多个实例。
因此,您可以立即使用where
条件进行更新。
还请记住,第一个选项返回更新的对象,第二个选项返回一个数组,该数组包含被跟踪的记录数量。