リターンをコールバックでラップすると、サーバーの Meteor.method が正常な応答を返すのに問題があります。
コールバックでラップされていない場合は正常に機能します。
コールバックでラップされている場合とラップされていない場合の両方で、新しい Meteor.errors をスローできます。
このまったく同じ方法でクライアント側で Meteor.call をラップすると、正常に機能します。
しかし、何らかの理由でサーバーでこれを行うと、return が呼び出されたときに応答値が返されません。
ここに例があります。これは私の正確なコードではありませんが、非常に近いです。しかし、それは非常に近いです。
Meteor.methods({
insertData: insertData
});
function insertData(params){
validateParams(params, function(bool, msg){
if(bool){
//do stuff, like insert records
result = 'thanks a million gagillions';
console.log(result);
return result;
} else {
throw new Meteor.Error(513, msg);
}
});
}
validateParams(params, callback){
for (var key in params) {
value = params[key];
if(_.isEmpty(value) || _.isUndefined(value) || _.isNull(value)) {
callback(false, 'Please enter your "'+ key + '".');
return;
}
}
callback(true);
}
結果が返されるようにするにはどうすればよいですか?