Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
Javascript 在发布/订阅中使用session.get变量_Javascript_Mongodb_If Statement_Meteor_Session Variables - Fatal编程技术网

Javascript 在发布/订阅中使用session.get变量

Javascript 在发布/订阅中使用session.get变量,javascript,mongodb,if-statement,meteor,session-variables,Javascript,Mongodb,If Statement,Meteor,Session Variables,我试图显示一个只加载所需内容的可过滤客户端数据库。我有两个变量(从下拉列表中选择),用于设置两个会话(country_插件和vertical_插件)。然后我想显示满足这些要求的内容 如果您不担心自动发布,那么下面的代码可以完美地工作,但我不知道如何使用pub/sub实现同样的功能 那么,简而言之,我如何在这里使用session.get和if语句 filteredclients: function () { var clientVerticalPicked = Sessio

我试图显示一个只加载所需内容的可过滤客户端数据库。我有两个变量(从下拉列表中选择),用于设置两个会话(country_插件和vertical_插件)。然后我想显示满足这些要求的内容

如果您不担心自动发布,那么下面的代码可以完美地工作,但我不知道如何使用pub/sub实现同样的功能

那么,简而言之,我如何在这里使用session.get和if语句

filteredclients: function () {
            var clientVerticalPicked = Session.get('vertical_plugin');
        var clientCountryPicked = Session.get('country_plugin');
            if (Session.get("country_plugin") === "none"){
                    return Clients.find({dealVerticalLink: clientVerticalPicked}, {sort: {dealMRR: -1}, limit:10});
            } else if (Session.get("vertical_plugin") === "none"){
                    return Clients.find({dealCountry: clientCountryPicked}, {sort: {dealMRR: -1}, limit:10});
            } else {
                    return Clients.find({$and:[{dealVerticalLink: clientVerticalPicked},{dealCountry: clientCountryPicked}]}, {sort: {dealMRR: -1}, limit:10});
            }
        }

会话变量仅在客户端上定义,因此您无法从发布函数中访问它们。您可以在客户端的Tracker.autorun中进行订阅,并将会话变量传递到发布函数中:

Tracker.autorun(function() {
    Meteor.subscribe('filteredclients', Session.get('vertical_plugin'), Session.get('country_plugin'))
});
在服务器上:

Meteor.publish('filteredclients', function(vertical_plugin, country_plugin) {
    if(country_plugin === "none") { return ... }
});

然后客户端上的Clients.find()应该只包含所需的记录

会话变量仅在客户端上定义,因此您无法从发布函数中访问它们。您可以在客户端的Tracker.autorun中进行订阅,并将会话变量传递到发布函数中:

Tracker.autorun(function() {
    Meteor.subscribe('filteredclients', Session.get('vertical_plugin'), Session.get('country_plugin'))
});
在服务器上:

Meteor.publish('filteredclients', function(vertical_plugin, country_plugin) {
    if(country_plugin === "none") { return ... }
});
然后客户端上的Clients.find()应该只包含所需的记录

所以问题是:“假设我可以在某个事件后更改会话变量,我如何使用这些变量来修改当前订阅”?那么问题是:“假设我可以在某个事件后更改会话变量,我如何使用这些变量来修改当前订阅”?