コールバックで戻り値をラップすると、Meteor.methodが正常な応答を返すのに問題があります。メテオールメソッドがコールバックでラップされた戻り値を返さない場合
コールバックでラップされていないと正常に動作します。
コールバックでラップされたときとコールバックでラップされていないときの両方で、新しいMeteor.errorsをスローすることができます。
この全く同じ方法でMeteor.callをクライアント側にラップすると問題はありません。
しかし、サーバー上で何らかの理由でこれを行うと、戻り値が呼び出されたときに応答値が返されません。
ここは例です。これは私の正確なコードではありませんが、非常に近いです。それは非常に近いですが。
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);
}
結果を返すにはどうすればよいですか?
これはうまくいった。他の人にヒント。クライアント側から新しいMeteor.Errorをスローする共有関数を呼び出す場合は、try catchでラップしてください。 –