Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 如何从服务器js获取客户端的会话obj值?_Meteor - Fatal编程技术网

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

Meteor 如何从服务器js获取客户端的会话obj值?,meteor,Meteor,您好,正如我在上面提到的,如何使用meteor从服务器到客户端js获取会话变量,请在下面放置代码验证并给我一个建议。在下面的代码中,如何在客户端js上获取ltest validation.Js: Meteor.methods({ signupUser: function signupUser(rawData){ console.log("rawData :: "+rawData); Mesosphere.signupForm.va

您好,正如我在上面提到的,如何使用meteor从服务器到客户端js获取会话变量,请在下面放置代码验证并给我一个建议。在下面的代码中,如何在客户端js上获取ltest

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);
                    });
                }
            });
        }
    });

首先,您需要为此使用Future从异步调用方法返回数据

其次,看起来您正试图通过调用另一个meteor方法来实现代码重用

在我看来,您不应该从另一个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()
        }
    });

希望这有帮助

会话在服务器端不可用,您一定遇到了错误。您想从这个meteor方法返回一些值给客户端吗?我知道,但是在上面的代码中,如何从服务器到客户端获取ltest的obj。@ajduke