.meta()
在執行查詢實例時,為 Waterline 提供額外選項。
.meta(options)
參數 | 類型 | 詳細資訊 | |
---|---|---|---|
1 | options | 選項的字典(純 JS 物件)。請參閱下表中的所有支援選項(又稱「meta 鍵」)。 |
選項 | 類型 | 預設值 | 詳細資訊 | |
---|---|---|---|---|
fetch | false | 在執行 .update() 、 .create() 、 .createEach() 或 .destroy() 查詢時,將此項設定為 true ,以告知資料庫配接器傳回所有已更新/刪除的記錄。否則,.exec() 回呼的第二個參數為 undefined 。警告:針對影響大量記錄的更新/刪除查詢啟用此鍵可能會導致效能問題。 |
||
cascade | false | 如果在 .destroy() 上設定為 true ,則會告知 Waterline 為每個刪除的記錄執行「虛擬級聯」。因此,刪除具有雙向複數關聯(一對多 或 多對多)的記錄,也將乾淨地移除所有與其他記錄的連結(透過移除聯結表列或將外鍵值設定為 null )。如果考量資料庫大小,或主鍵可能被記錄重複使用,則這可能是理想的,但由於它涉及執行更多查詢,因此可能會對 .destroy() 呼叫的效能產生負面影響。cascade meta 鍵應僅用於像 MongoDB 這樣的資料庫,這些資料庫不支援作為原生功能的級聯刪除。如果您需要級聯刪除,並且您的資料庫原生支援它(例如 MySQL 或 PostgreSQL),您將透過在物理層(例如 phpMyAdmin、Sequel Pro、mySQL 提示字元等)簡單地新增 CASCADE 約束 來享受更高的效能,而不是依賴 Waterline 的虛擬級聯在執行階段生效。 |
||
skipAllLifecycleCallbacks | false | 設定為 true 以防止在查詢執行期間執行生命週期回呼。 |
||
skipRecordVerification | false | 設定為 true 以跳過 Waterline 對於從配接器傳回的任何記錄的查詢後驗證過程。對於像 sails-hook-orm 的自動遷移這樣的工具很有用,或者在您知道資料庫中預先存在的記錄與您的模型定義不符的使用案例中,停用警告也很有用。 |
||
skipExpandingDefaultSelectClause | false | 設定為 true 以強制 Waterline 在建立階段 3 查詢(即傳遞到配接器方法中的查詢)時,跳過展開條件中的 select 子句。通常,如果模型宣告 schema: true ,則 S3Q select 子句會展開為欄位名稱陣列,即使 S2Q 具有工廠預設的 select /omit 子句(如果原始查詢中未包含明確的 select 或 omit 子句,也會是這種情況)。對於像 sails-hook-orm 的自動遷移這樣的工具很有用,在這些工具中,您希望臨時存取不一定在目前屬性定義集中的屬性。警告:請勿在您的 Web 應用程式後端中使用此標誌,或至少先尋求協助。 |
||
decrypt | false | 設定為 true 以解密記錄中的任何自動加密資料。 |
||
encryptWith | 'default' | 用於此特定查詢加密的自訂金鑰 ID。(對於解密,始終根據要解密的資料使用適當的金鑰。) | ||
makeLikeModifierCaseInsensitive | false | 設定為 true 以使您的查詢不區分大小寫(僅適用於 MongoDB 配接器)。 |
var newUser = await User.create({name: 'alice'})
.meta({fetch: true});
return res.json(newUser);
.fetch()
方法是.meta({fetch: true})
的簡寫。- 為了使
cascade
在fetch
meta 鍵未同時為true
時也能運作,Waterline 必須在實際執行.destroy()
之前執行額外的.find().select('id')
,以取得將被刪除的記錄的 ID。- 除了使用
.meta()
查詢方法外,您也可以在明確的回呼之後傳入字典來設定查詢的 meta 鍵。例如:User.create({name: 'alice'}, function(err, newUser){/*...*/}, { fetch: true })
。