gpt4 book ai didi

javascript - 在字符串中传递 _id 和搜索查询

转载 作者:行者123 更新时间:2023-11-28 19:19:50 25 4
gpt4 key购买 nike

使用meteor进行测试项目。在使用他们拥有的示例 todo 应用程序时,无法弄清楚如何传递 ID 和搜索参数。

目前,我的铁路由器中有:

this.route('team', {
path: '/team/:_id',
onBeforeAction: function() {
this.todosHandle = Meteor.subscribe('todos', this.params._id);
// Then filter mongoDB to search for the text
}});

问题是,我还想传递一个可选的 search 参数来搜索 todos。所以类似于 path: '/team/:_id(/search/:search)?'

有什么想法可以做到这一点吗?

最佳答案

从您的解释来看,您似乎想仔细控制哪些文档实际发布给客户端,而不是发布所有文档并缩小客户端上的结果集范围。在这种情况下,我建议首先在服务器上定义一个发布,如下所示:

Meteor.publish('todosByTeamIdAndSearch', function(todoTeamId, searchParameter) {
var todosCursor = null;

// Check for teamId and searchParameter existence and set
// todosCursor accordingly. If neither exist, return an empty
// cursor, while returning a subset of documents depending on
// parameter existence.
todosCursor = Todos.find({teamId: todoTeamId, ...}); // pass parameters accordingly

return todosCursor;
});

要了解有关定义更细化出版物的更多信息,请查看 this出来。

有了上面定义的出版物,您就可以像这样设置您的路线:

Router.route('/team/:_id/search/:search', {
name: 'team',
waitOn: function() {
return Meteor.subscribe('todosByTeamIdAndSearch', this.params._id, this.params.search);
},
data: function() {
if(this.ready()) {
// Access your Todos collection like you normally would
var todos = Todos.find({});
}
}
});

正如您从示例路由定义中看到的,您可以按照您希望直接在 Router.route() 函数的调用中看到的方式定义路由的路径并访问直接传入的参数就像在 waitOn 路由选项中一样。由于发布已按照我的建议进行定义,因此您只需将这些路由参数直接传递给 Meteor.subscribe() 函数即可。然后,在 data 路由选项中,检查订阅是否已准备就绪后,您可以像平常一样访问 Todos 集合,而无需进一步缩小结果集(如果您这样做)不需要这样做。

要了解有关如何配置路由的更多信息,请查看以下两个链接:Iron Router Route ParametersIron Router Route Options

关于javascript - 在字符串中传递 _id 和搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29087045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com