.validate()
指定された属性に対して値が有効かどうかを検証し、ゆるく型変換された値を返します。
Something.validate(attrName, value);
これは、
.update()
に渡される値の1つであるかのように、提供されたデータを検証(および場合によっては型変換)します。これは「ドライラン」のようなものと考えると良いでしょう。
# | 説明 | 許可されるデータ型 | 必須? |
---|---|---|---|
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
、プロミスチェーン、または従来の Node コールバックを使用する必要はありません。.validate()
は利便性のために個別のメソッドとして公開されています。常に.create()
または.update()
を最初に呼び出すだけでよく、これらのモデルメソッドは自動的に同じチェックを適用するため、代わりに.validate()
を呼び出す必要はありません。.validate()
は、他の目的でモデルの検証を再利用することが有益またはより美的に優れている(/DRY)場合に便利です。たとえば、Mailgun や Stripe のようなサードパーティ API と通信する前に、信頼できないデータを検証したり、コードを理解しやすくするために、最初に特定のモデル検証を実行したりする場合があります。.validate()
はデータベースと通信しないため、型安全エラーや高レベルの検証規則違反など、論理的なエラーのみを検出します。一意性などの物理層の制約に関する問題は、Sails や Waterline ではなく、基盤となるデータベースによってチェックされるため、検出できません。