ユーザーはnode.js
アプリにコンテンツを投稿すると、start_date、facebookのユーザー名、テキストの内容とフラグ、コンテンツを全員に公開するのか、自分のFacebookブックの友達に公開するのかの4つの要素を設定します。私のmongodb/mongooseクエリ条件は自分自身を除外します。それを修正するのを助けることができますか?
ユーザーがコンテンツを取得すると、他のユーザーの公開コンテンツとFacebookの友だちのコンテンツ(友だちのみのコンテンツを投稿した場合でも)を取得できます。
このシナリオで正しく動作するmongoose
クエリを作成しました。私はこのようにそれを行う:
var query = Test.find({})
if(startDate != undefined) {
var startDate = new Date(req.param('startDate'));
query = query.where('updated_at').gte(startDate);
}
if (friends != undefined) {
var friendsSplitted = friends.split(",");
for(var i=0; i<friendsSplitted.length; i++) {
query = query.or([{ 'facebook_username': friendsSplitted[i] }]);
}
}
query = query.where('hidden').equals(false);
if (publicFlag != undefined && publicFlag === "true") {
query = query.or({friends_only: false});
}
、彼POST
のstartDate
、彼のfriends
の配列、フラグhidden
falseに設定し、publicFlag
をfalseに設定します。クエリが構築される:
マングース:test.find({updated_atの:{ '$ GTE':新しい日付( "土、2011年10月15日 00:00:00 GMT")}、隠された:偽、 '$または':[{facebook_username: 'XXXXXXXXXXXXXX'}、{facebook_username: 'YYYYYYYYYYYYYYY'}]}){ フィールド:未定義}
ユーザーはまた、彼の友人(プライベートまたはパブリックないだけを照会することができます)コンテンツだけでなく、他の人の公開コンテンツも含みます。そのためには、彼はPOST
のstartDate
、彼のfriends
の配列、フラグhidden
をfalseに設定し、publicFlag
をtrueに設定します。クエリが構築される:
マングース:test.find({updated_atの:{ '$ GTE':新しい日付( "土、2011年10月15日 00:00:00 GMT")}、隠された:偽、 '$または':[{facebook_username: 'XXXXXXXXXXXXXX'}、{facebook_username: 'YYYYYYYYYYYYYYY'}、{ friends_only:偽}]}){フィールド:未定義}
上記のコードは正常に動作します。
ユーザーが特定のハッシュタグを使用してコンテンツを取得できる場合、別のケースを追加したいと思います。 基本的に、このオプションを選択すると、ハッシュタグのみを含む他のユーザーのコンテンツを見ることができます。その内容は彼のfbの友人の投稿(私的または公的)と他の人々の投稿(公的)です。
if (hashtagsInput != undefined) {
var hashtags = hashtagsInput.split(",");
for(var i=0; i<hashtags.length; i++) {
query = query.or([{ 'hashtags': hashtags[i] }]);
}
}
が、このソリューションが正常に動作しない:私は私の元node.js
コードにこの条件を追加することについて考えたことについては
。
ユーザーが彼の友人の(プライベートおよびパブリック)コンテンツなどの公開コンテンツフェッチしたい - しかし、ハッシュタグのいずれかが含まだけその1 - 彼POST
S startDate
を、彼のfriends
の配列、旗hidden
セットfalseには、publicFlag
がtrueに設定され、配列がhashtags
に設定されています。彼がそれをするとき、それはクエリを作成します:
マングース:テスト。} {{hashtags: 'test1'}、{hashtags: 'test2()}、{$ gte':新しい日付( "土、15 Oct 2011 00:00:00 GMT" ' }、{facebook_username 'XXXXXXXXXXXX'}、{facebook_username: 'YYYYYYYYYYYYYYYYYY'}、{friends_only:偽}]、削除:偽}){ フィールド:未定義}
基本的に私は制限します特定のハッシュタグにのみ一般的なクエリ。
このクエリは正しいデータを返しません。今私はmongoose
専門家ではなく、私はそれを理解しようとしている昨日のカップル時間を過ごしましたが、問題はそれがどちらかハッシュタグのいずれかを含むデータを返すと思うまたはその著者は私のFacebookの友人。
ユーザーPOST
ハッシュタグの場合は、公開されているすべてのユーザーの公開および公開されているコンテンツがフェッチされますが、少なくとも1つのハッシュタグが含まれているコンテンツのみが取得されます。 。また、ユーザーがハッシュタグを提供していないときは、それはそのままで、友人や全員の一般公開コンテンツをすべて取得します。
node.js
コードを修正して、正しいmongoose
クエリを作成できるように助けてください。
Puneetさん、ありがとう、私はもう少し小さな質問があります。このクエリで使用する場合は、 'if(username!= undefined){query。$ and.push({" username ":username})}を追加して変更する必要がありますか?または '.equals'などの他の特定の方法がありますか? – user3766930
あなたはquery。$と.push({"username":username})を使う必要がありますが、他の方法でもこれを行うことができますが、私はmongooseメソッドを持つ家庭ではありません。mongodbクエリを直接変更することをお勧めします。より複雑なクエリを作成することができます。 あなたが正しい答えを見つけたらそれを正解としてください。 :) –
あなたの助けのための巨大なおかげさまプネー!最後の1つの質問 - あなたはmongodbクエリの変更について書きましたが、それはどういう意味ですか?あなたは私にコメントの中で何か小さな例を与えることができますか?ありがとう! – user3766930