C'est peut-être le temps, peut-être que c'est moi la noyade dans rare documentation et de ne pas être en mesure d'envelopper ma tête autour de la notion de mise à jour de la Mangouste :)
Voici l'affaire:
J'ai un contact de schéma et modèle (raccourcissement de propriétés):
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);
mongoose.model('Contact', ContactSchema); //is this line superflous??
var Contact = mongoose.model('Contact', ContactSchema);
Je reçois une demande de la part du client, contenant les champs dont j'ai besoin et utiliser mon modèle c'est:
mongoose.connect(connectionString);
var contact = new Contact({
phone: request.phone,
status: request.status
});
Et maintenant, nous abordons le problème:
- Si je l'appelle,
contact.save(function(err){...})
je vais vous recevez un message d'erreur si le contact avec le même numéro de téléphone existe déjà (comme prévu - unique) - Je ne peux pas appeler de mise à jour() sur le contact, étant donné que la méthode n'existe pas sur un document
- Si je l'appelle de mise à jour sur le modèle:
Contact.update({phone:request.phone}, contact, {upsert: true}, function(err{...})
J'entre dans une boucle infinie de quelques sortes, depuis la Mangouste mise à jour de la mise en œuvre clairement ne veulent pas d'un objet en tant que second paramètre. - Si je fais la même chose, mais dans le second paramètre que je passe un tableau associatif de la demande de propriétés
{status: request.status, phone: request.phone ...}
il fonctionne, mais je n'ai pas de référence précise au contact et ne peut pas trouver son createdAt et updatedAt propriétés.
Donc la ligne du bas, après tout, j'ai essayé: étant donné un document contact
, comment puis-je le mettre à jour si elle existe, ou l'ajouter si elle ne l'est pas?
Merci pour votre temps.