Javascript 在发布/订阅中使用session.get变量
我试图显示一个只加载所需内容的可过滤客户端数据库。我有两个变量(从下拉列表中选择),用于设置两个会话(country_插件和vertical_插件)。然后我想显示满足这些要求的内容 如果您不担心自动发布,那么下面的代码可以完美地工作,但我不知道如何使用pub/sub实现同样的功能 那么,简而言之,我如何在这里使用session.get和if语句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
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()应该只包含所需的记录 所以问题是:“假设我可以在某个事件后更改会话变量,我如何使用这些变量来修改当前订阅”?那么问题是:“假设我可以在某个事件后更改会话变量,我如何使用这些变量来修改当前订阅”?