0

アプリに基本的な検索バー機能を実装しようとしています。

私にはたくさんの記事があり、誰もが所有者を持っています。これは、各記事の user パラメータの 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};

これを行う方法がわからない...

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 を使用して検索する必要があると思います。記事DB。

最初の提案は、おそらくもっと効率的だと思います。

于 2013-08-26T06:20:18.670 に答える