.validate()
驗證給定屬性的值是否有效,然後傳回該值 (寬鬆強制轉換)。
Something.validate(attrName, value);
此方法會驗證 (並可能強制轉換) 提供的資料,如同資料是傳遞至
.update()
的值之一。您可以將其視為「預演」。
# | 描述 | 接受的資料類型 | 是否必填? |
---|---|---|---|
1 | attrName | 要驗證的屬性名稱。 | |
2 | value | 要驗證/標準化的值。 |
檢查給定的字串並傳回標準化版本。
請注意,如果無法標準化,則會拋出錯誤。 請小心:您必須手動處理從非同步回呼中拋出的任何錯誤。
User.validate('emailAddress', req.param('email'));
User.validate('password', req.param('password'));
.validate()
方法可能會拋出您在呼叫 .update()
時可能看到的任何用法錯誤。例如
try {
var normalizedBalance = BankAccount.validate('balance', '$349.86');
} catch (err) {
switch (err.code) {
case 'E_VALIDATION':
// => '[Error: Invalid `bankAccount`]'
_.each(e.all, function(woe){
sails.log(woe.attrName+': '+woe.message);
});
break;
default:
throw err;
}
}
- 這是一個同步方法,因此您不需要使用
await
、promise 鏈或傳統的 Node 回呼。.validate()
作為一個獨立的方法公開是為了方便起見。您可以直接呼叫.create()
或.update()
,取代 先呼叫.validate()
,因為這些模型方法會自動應用相同的檢查。- 在實作某些用例時,
.validate()
非常有用,在這些用例中,為了其他目的重複使用您的模型驗證是有益的或更美觀的 (/DRY)。例如,您可能想要在與第三方 API (如 Mailgun 或 Stripe) 通訊之前驗證一些不受信任的資料,或者您可能只是想在最初執行某些模型驗證,以使某些程式碼更容易理解。.validate()
不會與資料庫通訊,因此它僅偵測邏輯錯誤,例如類型安全錯誤和高階驗證規則違規。它無法偵測實體層約束 (如唯一性) 的問題,因為這些約束是由底層資料庫 (而不是 Sails 或 Waterline) 檢查的。