.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 。 |
請參閱概念 > 模型與 ORM > 錯誤,以取得在 Sails 和 Waterline 中處理錯誤的範例。
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 方法。