我正在尝试在我的应用中实现基本搜索栏功能。
我有一堆文章,每个人都有一个主人。这是由每篇文章的用户参数中的userId指定的。
现在我可以在文章,标题和日期中搜索关键字。但是,我希望能够查询文章作者的用户名,但我只有userId可供我使用...
var keyword = Session.get("search-query");
var query = new RegExp( keyword, 'i' );
var results = Articles.find( { $or: [{'user': query}, // this is only searching userId of the author!
{'title': query},
{'articleText': query},
{'datetime': query}] } );
return {results: results};
我不知道该怎么做......
答案 0 :(得分:2)
欢迎使用非关系型数据库!您来自RDBMS环境,因此您期望加入。没有了。将用户名存储在它所属的文章中,然后是,如果用户更改了用户名,则需要循环访问该集合并更新_id匹配的用户名。
请在这里查看mongo策略(这根本不是Meteor特定的):http://docs.mongodb.org/manual/core/data-modeling/
PS:如果你看到你的模式 - 实际上真的不是一个 - 你会得到眼睛出血,你仍然可以给https://github.com/erundook/meteor-publish-with-relations一个去 - 但请注意,它会在变得更糟糕(看看你的mongo opslog)。发布关系只是为了方便和编程,而不是表现。 祝你好运!答案 1 :(得分:0)
所以我猜你必须保存用户名以及它自己的字段(或者将id和用户名都放在用户对象中),或者在Users集合中搜索有效的用户名,当你找到一个使用它时id用于搜索文章数据库。
我猜第一个建议可能会更有效率。
答案 2 :(得分:0)
这很简单,假设您在可以访问所有用户的服务器上进行搜索:
var username = Meteor.users.findOne(userId).username;