defaults
オブジェクトが次のようなバックボーン モデルを持っている場合:
defaults {
"id" : null
"name" : null,
"url" : null,
"admin" : {
"id" : null,
"email" : null
}
}
のようなものの存在を検証するための推奨される方法はありadmin[id]
ますか? 試行を行うメソッドを作成しましたが、(特に新しいモデルの作成時に)null
値に対して、またはデータが必要であると予想される値で DB からフェッチされnull
た場合 (このアプリを上に配置しています)既存のデータ)。
必須フィールドの存在を検証する方法は次のとおりです。
validatePresence = function(requiredAttrs, submittedAttrs, errorsArr) {
var regex = new RegExp(/[a-zA-Z0-9_]+|(?=\[\])/g),
attrStack = null,
val = null,
name = null;
for( var l = requiredAttrs.length; --l >= 0; ) {
attrStack = requiredAttrs[l].match(regex);
val = submittedAttrs[attrStack.shift()];
while(attrStack.length > 0) {
console.log(requiredAttrs[l]);
val = val[attrStack.shift()];
}
if( val === undefined ) { continue; }
name = requiredAttrs[l];
if( val === null || !val.length) {
if( !errorsArr[name] ) {
errorsArr[name] = [];
}
errorsArr[name].push("Oops, this can't be empty");
}
}
return errorsArr;
}
BB モデル内から呼び出す方法は次のとおりです。
validate: function(attrs) {
var requiredAttributes = ["name","admin[id]"],
errors = {};
errors = validatePresence(requiredAttributes, attrs, errors);
}
そのメソッドは、「admin[id]」のようなものを詰まらせるのが好きです。どんな助けでも大歓迎です。