6
Ich habe zwei Mungo-Schemata wie folgt:Mungo-Komplex (async) virtuals
var playerSchema = new mongoose.Schema({
name: String,
team_id: mongoose.Schema.Types.ObjectId
});
Players = mongoose.model('Players', playerSchema);
var teamSchema = new mongoose.Schema({
name: String
});
Teams = mongoose.model('Teams', teamSchema);
Wenn ich Abfrage Teams I auch die virtuelle erzeugte Kader bekommen würde:
Teams.find({}, function(err, teams) {
JSON.stringify(teams); /* => [{
name: 'team-1',
squad: [{ name: 'player-1' } , ...]
}, ...] */
});
aber I kann nicht bekommen diese mit virtuals, weil ich brauche eine asy nc Aufruf:
teamSchema.virtual('squad').get(function() {
Players.find({ team_id: this._id }, function(err, players) {
return players;
});
}); // => undefined
Was ist der beste Weg, um dieses Ergebnis zu erzielen?
Danke!
aber zum Beispiel in einem CRUD Dienst im Moment möchte ich bekommen die Liste der Teams mit den Trupps, ich muss teams.find -> Schleife über jedes Team -> getSquad für jedes Team -> erstellen Sie einen Klon von Teams Array (weil ich keine neuen Attribute in das zurückgegebene Array injizieren kann) und injizieren die Mannschaft für jedes Team -> res.json (clonedArray)? – frx08
Verwenden Sie ['lean()'] (http://mongoosejs.com/docs/api.html#query_Query-lean) in Ihrer Abfrage, wenn Sie Ihr Abfrageergebnis wie hier bearbeiten müssen. 'teams.find(). mager(). exec (cb)' – JohnnyHK
Gibt es heute eine bessere Lösung? – Linial