.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 | 如果發生任何其他意外情況,則會拋出此錯誤。 |
請參閱 概念 > 模型與 ORM > 錯誤,以取得在 Sails 和 Waterline 中處理錯誤的範例。
鍵 | 類型 | 詳細資訊 |
---|---|---|
fetch | 若設定為 true ,則將傳回更新後記錄的陣列。預設為 false 。 |
有關 meta 鍵的更多資訊,請參閱 .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
meta 鍵
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 方法。