510 Stimmen

Wie kann ich ein Dokument in Mongoose aktualisieren/einfügen?

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:

  1. Wenn ich anrufe contact.save(function(err){...}) Ich erhalte eine Fehlermeldung, wenn der Kontakt mit der gleichen Telefonnummer bereits existiert (wie erwartet - eindeutig)
  2. Ich kann nicht anrufen update() bei Kontakt, da es diese Methode bei einem Dokument nicht gibt
  3. 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.
  4. 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 y updatedAt 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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X