2017-01-30 2 views
0

Ich versuche, herauszufinden, wie alle Dokumente angezeigt werden Benutzer Zugriff hat, aber ich bin immer entweder keine Dokumente auf allen oder undefiniert user.docs wenn Person nicht angemeldet ist.Wie kann man alle Dokumente abfragen, auf die der Benutzer in mongodb Zugriff hat?

In Meteor, mein Benutzer hat

docs: { 
    "xxx1", 
    "xxx2", 
    "xxx3" 
} 

usw. (es kann unbegrenzte Anzahl von IDs sein. Wie mongo abzufragen alle Dokumente zu finden, die id = user.docs haben? (return array von docs).

Antwort

0

‚Wenn eine Person nicht angemeldet ist in '? Ich nehme an, das ist Serverseite?

Versuchen Sie, 'Docs' von Meteor.user() abzurufen? Das funktioniert nur mit dem aktuell angemeldeten Benutzer.

Server-Seite mongodb Abfrage auf einem Benutzer:

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

Sollten Sie geben:

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

mit Benutzerdaten vorsichtig!

EDIT:

Wenn Sie versuchen, Dokumente zu erhalten, die das doc-IDs von einem Benutzerobjekt übereinstimmen, würden Sie im Idealfall Ihre Datenstruktur

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

neu anordnen Dann wäre es:

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

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

Verwenden Sie den $in Operator _ids in einem Array zu finden:

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

Ich habe beide versucht und am Ende mit

docs = getDocsForUser(user); //print array of docs 
return docs.find({_id: {$in: docs}}) 
Verwandte Themen