-1

我有以下自动生成挂钩代码。如何在 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 */
4

2 回答 2

0

您认为您可以在定义方法的文件中添加吗?我最近尝试做类似的事情时遇到了类似的问题,这与我的方法定义的格式有关。

对我来说,我在方法定义中返回数据的地方放错了地方。在另一个类似问题的另一个实例中,我没有在客户端订阅 Collection。

如果这不是问题,并且您的调用正确返回数据,它只是没有将其传递到调用上下文之外,您可以尝试使用 Session.set 定义一个会话变量,然后可以在需要数据时调用该变量.

尽管没有方法定义的上下文,但很难准确地判断发生了什么。

于 2015-04-28T06:51:43.397 回答
0

你可以看看这个https://github.com/stubailo/meteor-reactive-method

它可能会解决你的问题

于 2015-04-28T06:49:55.193 回答