.updateOne()
更新匹配给定条件的记录(如果存在)。
var updatedRecord = await Something.updateOne(criteria)
.set(valuesToSet);
在尝试修改数据库之前,Waterline 会检查是否有多条记录匹配给定条件;如果是,它会抛出一个错误而不是继续执行。
参数 | 类型 | 详情 | |
---|---|---|---|
1 | criteria | 用于匹配数据库中记录的Waterline 查询条件。 | |
2 | valuesToSet | 所有匹配记录都应更新为具有的值的字典(普通 JavaScript 对象)。(注意,如果此模型处于“模式化”模式,则任何多余的键都会被静默忽略。) |
注意:出于性能原因,从 Sails v1.0 / Waterline 0.13 开始,传递给此模型方法的
valuesToSet
对象在大多数情况下都会就地修改(而在 Sails/Waterline v0.12 中,情况并非总是如此)。
类型 | 描述 |
---|---|
updateOne() 永远不会更新超过一条记录,因此,如果更新了一条记录,则该记录将作为结果提供。否则,将返回 undefined 。 |
有关在 Sails 和 Waterline 中协商错误的示例,请参见概念 > 模型和 ORM > 错误。
var updatedUser = await User.updateOne({ firstName:'Pen' })
.set({
firstName:'Finn'
});
if (updatedUser) {
sails.log('Updated the user named "Pen" so that their new name is "Finn".');
}
else {
sails.log('The database does not contain a user named "Pen".');
}
- 此方法不支持 .fetch(),因为它始终返回匹配到的修改后的记录。
- 此方法可与
await
、Promise 链或传统的 Node 回调一起使用。- 此方法可用于替换整个集合关联(例如,用户的友人列表),从而获得与
replaceCollection
方法相同的结果。要单独修改集合中的项目,请使用addToCollection
或removeFromCollection方法。