Vielleicht liegt es an der Zeit, vielleicht aber auch daran, dass ich in der spärlichen Dokumentation ertrinke und nicht in der Lage bin, das Konzept der Aktualisierung in Mongoose zu begreifen :)
So sieht es aus:
Ich habe ein Kontaktschema und -modell (verkürzte Eigenschaften):
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var mongooseTypes = require("mongoose-types"),
useTimestamps = mongooseTypes.useTimestamps;
var ContactSchema = new Schema({
phone: {
type: String,
index: {
unique: true,
dropDups: true
}
},
status: {
type: String,
lowercase: true,
trim: true,
default: 'on'
}
});
ContactSchema.plugin(useTimestamps);
var Contact = mongoose.model('Contact', ContactSchema);
Ich erhalte eine Anfrage vom Kunden, die die von mir benötigten Felder enthält, und verwende mein Modell auf diese Weise:
mongoose.connect(connectionString);
var contact = new Contact({
phone: request.phone,
status: request.status
});
Und jetzt kommen wir zu dem Problem:
- Wenn ich anrufe
contact.save(function(err){...})
Ich erhalte eine Fehlermeldung, wenn der Kontakt mit der gleichen Telefonnummer bereits existiert (wie erwartet - eindeutig) - Ich kann nicht anrufen
update()
bei Kontakt, da es diese Methode bei einem Dokument nicht gibt - Wenn ich die Aktualisierung des Modells aufrufe:
Contact.update({phone:request.phone}, contact, {upsert: true}, function(err{...})
Ich gerate in eine Art Endlosschleife, da die Mongoose-Update-Implementierung eindeutig kein Objekt als zweiten Parameter haben will. - Wenn ich dasselbe tue, aber im zweiten Parameter übergebe ich ein assoziatives Array der Anforderungseigenschaften
{status: request.status, phone: request.phone ...}
es funktioniert - aber dann habe ich keinen Bezug zu dem spezifischen Kontakt und kann nicht herausfinden, wie er heißt.createdAt
yupdatedAt
Eigenschaften.
Das Fazit nach all meinen Versuchen: Wenn ich ein Dokument contact
Wie aktualisiere ich sie, wenn sie vorhanden ist, oder füge sie hinzu, wenn sie nicht vorhanden ist?
Vielen Dank für Ihre Zeit.