Vielen Dank an alle, die Unterstützung für die erste Schritt dieses Rätsels vor allem @ Gaëtan Rouziès und @Neil. Auf dieser thread funktionierte der Code perfekt für das betreffende Szenario. Ich möchte den gleichen Code für ein anderes ähnliches Szenario anpassen und ich muss noch verstehen, was falsch sein könnte. Dieses Mal habe ich eine coursemodule
Sammlung, eine viele: viele Beziehungssammlung zwischen Kursen und Modulen, die nur coursesId
und moduleId
speichert. Da der Code perfekt funktioniert, habe ich einfach kopiert, eine kleine Änderung und kam unten auf den Code:Doing a 1: viele: viele beitreten in mongodb
courses(){
var theslug = FlowRouter.getParam('myslug');
var mySchoolDocs = SchoolDb.findOne({slug: theslug});
var arrayModuleSchools = ModuleSchool.find({schoolId: mySchoolDocs._id});
// Transform the array of document into an array with only the ids
var arrayModuleId = [];
arrayModuleSchools.forEach(function(moduleSchools){
arrayModuleId.push(moduleSchools.moduleId);
});
var coursetoMod = CourseModules.find({}, {moduleId: {$in: arrayModuleId}});
if (coursetoMod) {
coursesArrayIds = [];
console.log(coursetoSchool);
coursetoMod.forEach(function (courseToModules) {
coursesArrayIds.push(courseToModules.coursesId);
});
return Courses.find({_id: {$in: coursesArrayIds}}).fetch();
}
}
Um genau zu sein, nur 2 Module existieren in der Modules
Sammlung, mit ids - xfLM9DEzhCMYQpQ32 and PTbZQ9cTG9pByFsY2
. Die CourseModule Sammlung hat dies hat docs:
{
"_id" : "iXX4unJZRNcCw9bAm",
"moduleId" : "PTbZQ9cTG9pByFsY2",
"coursesId" : "FbgcdZxADHKRBj98z",
"createdAt" : ISODate("2017-08-25T16:36:17.173Z"),
"userId" : "n5rqFSHbhm7zqADyB"
}
{
"_id" : "RAJJFjqAjGoDeNhko",
"moduleId" : "PTbZQ9cTG9pByFsY2",
"coursesId" : "ESAf6NGpZzXeioecp",
"createdAt" : ISODate("2017-08-25T16:36:17.182Z"),
"userId" : "n5rqFSHbhm7zqADyB"
}
{
"_id" : "8ceuFwZK8Qduo5J5P",
"moduleId" : "xfLM9DEzhCMYQpQ32",
"coursesId" : "KnNj4GLcyMtvF8JmB",
"createdAt" : ISODate("2017-08-25T16:38:15.368Z"),
"userId" : "n5rqFSHbhm7zqADyB"
}
An dem Punkt, wo ich in der Konsole anmelden Ich habe, dass die selectorId
ist nicht definiert:
L ... n.Cursor {Kollektion: LocalCollection, Sortierer: null, Matcher: M ... o.Matcher, _selectorId: undefiniert, überspringen: undefiniert ...} _projectionFn: (OBJ) _selectorId: undefined_transform: nullcollection: LocalCollectionfields: undefinedlimit: undefinedmatcher: Minimongo.Matcherreactive: trueskip: undefinedsorter: null__proto__: Object_depend: (Wechslern, _allow_unordered) _getCollectionName: () _getRawObjects: (Optionen) _publishCursor: (sub) Konstruktor: (Sammlung, Selektor, Optionen) zählen:() fetch:() forEach: (Rückruf, thisArg) getTransform :() Karte: (Rückruf, thisArg) beobachten: (Optionen) beobachten Sie Änderungen: (Optionen) Zurückspulen:() Proto: Objekt view.js: 30 L ... n.Cursor {Sammlung: LocalCollection, Sortierer: null, Matcher: M ... o.Matcher, _selectorId: undefined, überspringen: undefined ...}
Alles, was ich tun möchte, ist die Kurse an einer bestimmten Schule zur Zeit über die Module angezeigt zu holen.
Welche Konsole gibt diese Fehlermeldung? Die Chrom-Debugger-Konsole? Oder die "Meteor-Mongo" -Konsole? Oder die "Meteor" -Serverkonsole? –