これは、バックボーンを使用するクライアント側またはサーバー側のアプリのいずれかに関連します。MongoDBまたはREST呼び出し(環境に応じて)に対する一意性チェックを備えた検証関数を作成しようとしています。これらの呼び出しは両方とも本質的に非同期です。ただし、検証のために、実際にはここでブロックする必要があると思います。何も返さない場合、validate関数は検証に合格したと見なします。
私のコードは現在、サーバー側では次のようになっています。
isUnique: function (key) {
var dfdFindOne = this.findOne({key: this.get(key)}),
dfd = new Deferred();
dfdFindOne.done(function (err, result) {
console.log(result);
dfd.resolve(true);
});
return dfd;
};
...ここにいくつかのものがあります....
ここに戻る前に、機能が完了するまで何らかの待機を行うことができるように感じます...おそらくそうではありません。バックボーンがコールバック関数か何かを提供するか、ある種の遅延型のものを受け入れることを望みます。
validate: function() {
var result = undefined;
if(!this.isUnique(key).done(function(){
result = "AHHH not unique!";
});
return result;
}
考えられる解決策は、mongodbのネイティブノードクライアントに同期的に呼び出しを強制することです。残りの呼び出しでも同じことができると思います...これはおそらく悪い解決策です。