如何在Meteor的集合中查询userId中的用户名?

时间:2013-08-26 04:30:20

标签: mongodb meteor

我正在尝试在我的应用中实现基本搜索栏功能。

我有一堆文章,每个人都有一个主人。这是由每篇文章的用户参数中的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};

我不知道该怎么做......

3 个答案:

答案 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;