如何从服务器js获取客户端的Session obj值?

时间:2015-02-03 04:23:04

标签: meteor

嗨,因为我上面介绍了如何使用下面的meteor从服务器到客户端js获取会话变量放置代码验证并给我一个sugession.In下面的代码如何在客户端获得 ltest JS。

validation.Js:

 Meteor.methods({
        signupUser: function signupUser(rawData){
            console.log("rawData :: "+rawData);
            Mesosphere.signupForm.validate(rawData, function(errors, exmp){
                if(!errors){
                    console.log("No Errors Found");
                    var username = '';
                    var password = '';
                    console.log(rawData.length + ">>>>>>>");
                    for(var i = 0;i < rawData.length ; i++)
                    {
                        var obj = rawData[i];
                        if(i == 0)
                        {
                            username = rawData[i].value;
                            console.log(rawData[i].value + ">>>>>>>" + obj.value);
                        }
                        else(i == 1)
                        {
                            password = rawData[i].value;
                        }
                    }
                    var  obj = Meteor.call('ltest', username,password);
                    console.log("**********************"+obj);  
                    //Session.set('q', obj);

                    //Do what you want with the validated data.
                }else{
                    _(errors).each( function( value, key ) {
                        console.log("signupUser >> "+key+": "+value.message);
                    });
                }
            });
        }
    });

1 个答案:

答案 0 :(得分:0)

首先,您需要使用Future来从方法中的异步调用返回数据。

其次,看起来你正试图通过调用另一个流星方法来重复使用代码。

IMO,你不应该从另一个meteor方法调用meteor方法,这将创建另一个获取结果的回调,这会增加开销并使代码无法读取。您基本上应该创建公共函数并尝试从Meteor方法中调用它。

以下是列表,应该有效

// define this future at top of file 
Future = Npm.require("fibers/future")

 Meteor.methods({
        signupUser: function signupUser(rawData){
            console.log("rawData :: "+rawData);
            future = new Future()
            Mesosphere.signupForm.validate(rawData, function(errors, exmp){
                if(!errors){
                    console.log("No Errors Found");
                    var username = '';
                    var password = '';
                    console.log(rawData.length + ">>>>>>>");
                    for(var i = 0;i < rawData.length ; i++)
                    {
                        var obj = rawData[i];
                        if(i == 0)
                        {
                            username = rawData[i].value;
                            console.log(rawData[i].value + ">>>>>>>" + obj.value);
                        }
                        else(i == 1)
                        {
                            password = rawData[i].value;
                        }
                    }
                    //var  obj = Meteor.call('ltest', username,password);
                    // replace above call to common method as described above 
                     obj = common_ltest(username, password);
                    console.log("**********************"+obj);                          
                    future['return'](obj);
                }else{
                    _(errors).each( function( value, key ) {
                        console.log("signupUser >> "+key+": "+value.message);
                    });
                     // assuming some error here, return null to client 
                      future['return'](null);
                }
            });
          // **note that, this important**
          return future.wait()
        }
    });

希望这有帮助