0

I am trying to implement a basic search bar functionality in my app.

I have a bunch of articles, and everyone has an owner. This is specified by the userId in the user parameter of each article.

Right now I can search for keywords within the article, the title, and the date. However I want to be able to query for the username of the author of the article, but I only have the userId available to me...

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};

I'm not sure how to do this...

4

3 回答 3

2

欢迎使用非关系数据库!您来自 RDBMS 环境,因此您期望加入。没有了。将用户名存储在它所属的文章中,然后是的,如果用户更改了他们的用户名,您需要遍历集合并更新 _id 匹配的用户名。

请在此处查看 mongo 策略(这根本不是 Meteor 特定的):http ://docs.mongodb.org/manual/core/data-modeling/

PS:如果您在查看您的架构时眼睛出血 - 实际上 - 真的 - 不是 - 一个,您仍然可以给https://github.com/erundook/meteor-publish-with-relations一个去 -但请注意,在引擎盖下它会变得“更糟”(看看你的 mongo opslog)。使用关系发布只是为了方便和易于编程,而不是性能。

祝你好运!

于 2013-08-27T13:28:48.353 回答
0

这很容易,假设您在可以访问所有用户的服务器上进行搜索:

var username = Meteor.users.findOne(userId).username;
于 2013-08-26T14:17:33.090 回答
0

所以我想你必须要么保存用户名以及它自己的字段(或者将 id 和用户名都放在用户对象中),或者在用户集合中搜索有效的用户名,当你找到一个使用它的 id 进行搜索时文章数据库。

我猜第一个建议可能会更有效率。

于 2013-08-26T06:20:18.670 回答