.update()
更新所有匹配条件的记录。
await Something.update(criteria)
.set(valuesToSet);
或者
var updatedRecords = await Something.update(criteria).set(valuesToSet).fetch();
参数 | 类型 | 详情 | |
---|---|---|---|
1 | criteria | 用于匹配数据库中记录的 Waterline 条件。update 查询不支持使用 skip 和 limit 进行分页,也不支持使用 select 进行投影。 |
|
2 | valuesToSet | 一个字典(普通 JavaScript 对象),包含所有匹配记录应该更新为具有的值。(注意,如果此模型处于 "模式化" 模式,那么任何多余的键将被静默省略。) |
注意:出于性能原因,从 Sails v1.0 / Waterline 0.13 开始,传递给此模型方法的
valuesToSet
对象将在大多数情况下被就地修改(而在 Sails/Waterline v0.12 中,情况并非如此)。
类型 | 描述 |
---|---|
默认情况下,更新后的记录不会作为结果提供,以便优化性能。要覆盖默认设置,请链接 .fetch() ,并将更新后的记录数组发送回来。(请注意,这在某些适配器中需要额外的数据库查询。) |
名称 | 类型 | 何时? |
---|---|---|
UsageError | 如果传递了无效内容,则抛出此错误。 | |
AdapterError | 如果数据库适配器中出现错误,则抛出此错误。有关如何协商唯一性错误(例如,尝试更新一个或多个记录以违反唯一性约束)的示例,请参阅 概念 > 模型和 ORM > 错误。 | |
Error | 如果发生任何其他意外情况,则抛出此错误。 |
有关在 Sails 和 Waterline 中协商错误的示例,请参阅 概念 > 模型和 ORM > 错误。
键 | 类型 | 详情 |
---|---|---|
fetch | 如果设置为 true ,则会发送回更新后的记录数组。默认为 false 。 |
有关元键的更多信息,请参阅 .meta()。
要更新特定记录,请使用 .updateOne()
。
或者,要同时更新一条或多条记录
await User.update({ name:'Pen' })
.set({
name:'Finn'
});
sails.log('Updated all users named Pen so that their new name is "Finn". I hope they like it.');
要获取更新后的记录,请启用 fetch
元键
var updatedUsers = await User.update({name:'Finn'})
.set({
name:'Jake'
})
.fetch();
sails.log(`Updated all ${updatedUsers.length} user${updatedUsers.length===1?'':'s'} named "Finn" to have the name "Jake". Here they are now:`);
sails.log(updatedUsers);
- 此方法可以与
await
、Promise 链或 传统 Node 回调 一起使用。- 此方法可用于替换整个集合关联(例如,用户的“好友”列表),这将实现与
replaceCollection
方法 相同的结果。要单独修改集合中的项目,请使用addToCollection
或 removeFromCollection 方法。
req
)
res
)