2017-01-30 2 views
0

私は、ユーザーがアクセス権を持っていますが、人がログインしていない場合、私はどちらかのすべてまたは未定義user.docsで何の書類を取得していないのですすべての文書を表示する方法を把握しようとしています。ユーザーがmongodbにアクセスできるすべてのドキュメントを照会するには?

を流星では、私のユーザーは

を持っています
docs: { 
    "xxx1", 
    "xxx2", 
    "xxx3" 
} 

など(それはIDの無限の数であってもよい。 ドキュメントのID = user.docs?(リターン・アレー)を持っているすべてのドキュメントを検索するにはモンゴを照会する方法。

答えて

0

「人がログインしていない場合サーバー側であると仮定していますか?

Meteor.user()の「文書」を取得しようとしていますか? これは、現在ログインしているユーザーのみで動作します。ユーザーの

サーバー側のMongoDBのクエリ:

Meteor.users.findOne({_id: '<userId string here>'},{fields: {docs: 1}}); 

はあなたを与える必要があります。

{_id: '<userId string here>', docs: {...docs here...}} 

は、ユーザデータに注意してください!

EDIT:

ユーザーオブジェクトからドキュメントIDと一致ドキュメントを取得しようとしている場合は、あなたが理想的

docs: ['docId', 'docId'] <---this may be your main problem 

にデータ構造を再配置するだろう、それは次のようになります。

var userDocsIds = Meteor.users.findOne({_id: '<userId string here>'},{fields: {docs: 1}}); 

var userDocs = Docs.find({_id: {$in: userDocsIds.docs}}).fetch(); 
0

$in演算子を使用して、配列内の_idsを見つけます。

const docIds = Meteor.users.findOne(id).docs; 
const myDocs = Docs.find({_id: {$in: docIds }}); 
0

私は両方を試してみましたが、

docs = getDocsForUser(user); //print array of docs 
return docs.find({_id: {$in: docs}}) 
を使用して終了しています
関連する問題