.findOrCreate()
尋找符合指定條件的記錄。如果沒有符合的記錄,則使用提供的初始值建立一個。
var newOrExistingRecord = await Something.findOrCreate(criteria, initialValues);
或者,如果您需要知道是否建立了新記錄,
Something.findOrCreate(criteria, initialValues)
.exec(function(err, newOrExistingRecord, wasCreated) {
});
# | 參數 | 類型 | 詳細資訊 |
---|---|---|---|
1 | criteria | 用於在資料庫中匹配記錄的 Waterline 條件。此特定條件應始終完全匹配資料庫中的零個或一個記錄。 | |
2 | initialValues | 如果建立新記錄,則為新記錄的初始值。 |
參數 | 類型 | 詳細資訊 | |
---|---|---|---|
1 | err | 發生的錯誤,如果沒有錯誤,則為 undefined 。 |
|
2 | newOrExistingRecord | 找到的記錄,如果找不到此類記錄,則為 undefined 。 |
|
3 | wasCreated | 是否建立了新記錄。 |
名稱 | 類型 | 何時? |
---|---|---|
UsageError | 如果傳入了無效的內容,則拋出。 | |
AdapterError | 如果資料庫配接器中發生錯誤,則拋出。 | |
Error | 如果發生任何其他意外情況,則拋出。 |
請參閱 概念 > 模型與 ORM > 錯誤 以取得在 Sails 和 Waterline 中處理錯誤的範例。
讓我們確保我們的測試使用者 Finn 存在
User.findOrCreate({ name: 'Finn' }, { name: 'Finn' })
.exec(async(err, user, wasCreated)=> {
if (err) { return res.serverError(err); }
if(wasCreated) {
sails.log('Created a new user: ' + user.name);
}
else {
sails.log('Found existing user: ' + user.name);
}
});
- 此方法可以與
await
、promise 鏈式呼叫或 傳統 Node 回呼 一起使用。如果您使用await
,請注意結果將僅為記錄—您將無法存取wasCreated
。- 在幕後,這使用了
.findOne()
,因此如果資料庫中有多個記錄符合提供的條件,則會出現錯誤說明。