.createEach()
在資料庫中建立一組記錄。
await Something.createEach(initialValues);
或
var createdRecords = await Something.createEach(initialValues).fetch();
參數 | 類型 | 詳細資訊 | |
---|---|---|---|
1 | initialValues | 包含新記錄屬性的字典陣列。 |
注意:基於效能考量,從 Sails v1.0 / Waterline 0.13 開始,傳遞到此模型方法的
initialValues
陣列中的字典在大多數情況下會直接就地修改(而在 Sails/Waterline v0.12 中,情況不一定如此)。
類型 | 描述 |
---|---|
為了最佳化效能,預設情況下不會提供已建立的記錄作為結果。若要覆寫預設設定,請鏈式調用 .fetch() ,新建立的記錄將會回傳。(請注意,這在某些适配器中需要額外的資料庫查詢。) |
名稱 | 類型 | 何時? |
---|---|---|
UsageError | 如果傳入無效的內容,則會拋出此錯誤。 | |
AdapterError | 如果資料庫适配器發生錯誤,則會拋出此錯誤。請參閱Concepts > Models and ORM > Errors,以了解如何處理唯一性錯誤的範例(起因於嘗試建立具有重複值的記錄,而這會違反唯一性約束)。 | |
Error | 如果發生任何其他非預期的情況,則會拋出此錯誤。 |
有關在 Sails 和 Waterline 中處理錯誤的範例,請參閱Concepts > Models and ORM > Errors。
鍵 | 類型 | 詳細資訊 |
---|---|---|
fetch | 如果設定為 true ,則會回傳已建立的記錄。預設值為 false 。 |
有關 meta 鍵的更多資訊,請參閱.meta()。
在資料庫中建立名為 Finn 和 Jake 的使用者
await User.createEach([{name:'Finn'}, {name: 'Jake'}]);
var createdUsers = User.createEach([{name:'Finn'}, {name: 'Jake'}]).fetch();
sails.log(`Created ${createdUsers.length} user${createdUsers.length===1?'':'s'}.`);
- 此方法可以與
await
、Promise 鏈式調用或傳統 Node 回呼一起使用。- 您可以使用
.createEach
新增的記錄數量受限於您使用的特定資料庫的最大查詢大小。 MySQL 預設的限制為 4MB,但可以透過max_allowed_packet
設定來變更。 MongoDB 對於單個文件施加 16MB 的限制,但基本上對於一次可以建立的文件數量沒有限制。 PostgreSQL 具有非常大的(約 1GB)最大大小。 有關查詢限制的更多資訊,請查閱您的資料庫文件。- 在執行非常大量的批量插入時,另一個需要注意的事項是綁定變數的最大數量。 這因資料庫而異,但指的是查詢中被替換的值的數量。 有關更多詳細資訊,請參閱最大允許參數數量。
- 當使用
.fetch()
並手動為新記錄指定主鍵值時,不保證回傳記錄的排序順序(它會根據使用的資料庫适配器而有所不同)。