Heute habe ich den funktionalen Teil meiner Website fertiggestellt, also ging ich in den Bereich Secure-my-app der Entwicklung. Ich möchte den Benutzern nur den Inhalt geben, auf den sie sich beziehen, also möchte ich meinen Lehrern (= ein Benutzer mit user.role == "lehrer") nur den Zugang zu einer bestimmten Aufgabe geben, wenn ihre _id in ist das assignment.teachersList-Array von _ids. Ich möchte diese Verifizierung in der Veröffentlichung machen, so dass ich einen Cursor am Ende der Abfrage erhalten muss.(Mongo) Arrays von IDs: Wie soll ich es tun?
Nach OFFICIAL documentation of mongo auf der Suche, wie es scheint, zu tun, was ich soll so einfach sein will wie:
// in a publish
Assignements.find({ teachersList: this.userId });
Doch diese mich falsch immer wieder. Erstens Angst vor einem dieses Kontext Problem zu sein, habe ich versucht, so etwas wie:
// in a publish
let self = this;
Assignements.find({ teachersList: self.userId });
und es ist nicht besser, habe ich noch nichts. Ich habe versucht, Cursor.map() zu benutzen und meine Bedingung dorthin zu setzen, aber da Karte keinen Cursor zurückbringt, erhalte ich die Daten, aber es funktioniert auch nicht, da wir in einer Veröffentlichung sind.
Es ist in dem Dokument geschrieben, dass der erste Versuch, den ich gemacht habe, funktionieren sollte, also keine Zweifel, ich mache etwas falsch, aber was ..? Jetzt beginne ich mich zu fragen, ob das Problem von der Tatsache herrührt, dass es ein Array von _ids ist. Im Moment ist es nur eine Reihe von Strings. Und es scheint, dass this.userId in einer Methode nur einen String zurückgibt .... Aber vielleicht liege ich falsch und ich sollte stattdessen Meteor.Mongo.ObjectId (the_string_id) Objekte verwenden?
Ok, das war's! Bitte, wenn Sie irgendeine Idee haben, warum solch eine einfache Frage nicht funktioniert, sagen Sie mir! Danke :)
Vielen Dank für Ihre Antwort und wieder ist Ihr Muster eine ziemlich gute Idee! Du hast mir etwas beigebracht :) Ich werde es wahrscheinlich in einem zukünftigen Projekt verwenden :) – xababafr
Ich habe dieses Muster noch nicht gefunden, es vor einiger Zeit irgendwo in einem Tutorial gefunden, es ausprobiert und es behalten ... wenn du es bist glücklich mit der Antwort und es löst Ihr Problem, bitte markieren Sie es als eine Antwort zu vermeiden, dass andere Leute versuchen, es zu beantworten. – Mozfet