Ich habe eine sehr einfache Beziehung von eins zu vielen, wo eine User
eine Liste von Alerts
hat. Dazu habe ich die folgenden Schemata definiert:Speichern einer Eins-zu-Viele-Beziehung in Node.js mit Mungo
var userSchema = new Schema({
email: String,
alerts: [{type: Schema.Types.ObjectId, ref: 'Alert'}]
});
var User = mongoose.model('User', userSchema);
var alertSchema = new Schema({
_creator: {type: Schema.Types.ObjectId, ref: 'User'},
value: String,
});
var Alert = mongoose.model('Alert', alertSchema);
Nun, ich versuche, eine Funktion zu erstellen, die ein neues Alert
erstellt und fügt sie zu einem vorhandenen User
aus der Datenbank. Ich habe den folgenden Code (Entfernen von Fehlerbehandlung so dass der Code kürzer):
function createAlertForUser(userId, value) {
User.findOne({_id: userId}, function (error, user) {
var alert = new Alert({
_creator: userId,
value: value
});
alert.save(function (error, alert) {
// push it to the user
user.alerts.push(alert);
user.save(function(error) {
console.log("saved");
});
});
});
}
Allerdings, wenn ich die Datenbank zu überprüfen, scheine ich NULL-Werte auf die Benutzerliste von Warnungen zu speichern. Irgendwelche Ideen was ich vermisse?
Sind Sie sicher, dass userId bereits eine ObjectId ist, wenn sie hier verwendet wird? – Paul