我有以下autoform鉤子代碼。我如何獲得method.call以外的價值?MeteorJs,無法獲得方法外的method.call返回值
我的問題是,當我運行method.call時,'chi'值是未定義的。而服務器上有'1'記錄,但是chi沒有得到'myResult'值。如果我註釋掉method.call並返回'Gogo',那麼'chi'正確地獲取這個值。有人能指導我做錯了什麼,以及如何糾正。
代碼:
before: {
method: function(doc) {
var retVal = false ;
var pai = Q.fcall(function(){
if(!_.isEmpty(doc) && _.pick(doc, 'name')) {
console.log('Ist level, true condition: ', doc);
return true;
}
else{
console.log('Ist level, false condition: ', doc);
return false;
}
})
.then(function(check){
console.log('Check value: ', check);
if(check){
Meteor.call('CategoryNameAvailable', doc.name, function (error, result) {
console.log('Returned result from server', result);
if (!result) {
if(Contexts.Category.keyIsInvalid('name')){
Contexts.Category.resetValidation('name');
}
console.log('Returned result from server inside if condition ', result);
Collections.Category.simpleSchema().namedContext("CategoryInsertForm").addInvalidKeys([{
name: "name",
type: "notUnique"
}]);
console.log('Doc value in meteor call function: ', doc);
Session.set('retVal', true);
console.log('retVal value in meteor call function: ', retVal);
}
return 'myResult';
});
// return 'Gogo';
/* Meteor call End */
}
})
.then(function(chi){
console.log('Chi value: ', chi);
})
.done();
console.log('Pai value-2: ', pai);
} /* End of method */
} /* End of 'before' hook */
問題是'if'條件在方法從服務器返回值之前完成其執行。所以一些速度問題:)'如果'比method.call更快。 – Simpanoz