2011-07-30 4 views
2

Je suis aux prises avec la création de fonctions de modèle pour les modèles Mongoose. Je définis une méthode ici:Problèmes d'exportation des fonctions du modèle avec Mongoose

Schema.listingSchema.method('applyPrice', function() { 
    this.price = priceFromString(this.title); 
}); 

et je avoir accès ici:

var listing = new Listing(); 

// assign all relevant data 
listing.title = title; 
... 

// pull the price out of the title and description 
listing.applyPrice(listing); 

Listing = mongoose.model('Listing', Schema.listingSchema); 

et je reçois l'erreur:

TypeError: Object #<model> has no method 'applyPrice' 

Quelqu'un peut-il voir le problème?

Répondre

0

Comment définissez-vous votre schéma? Habituellement, vous devriez faire quelque chose comme ceci:

var listingSchema = new mongoose.Schema({ 
    title: String 
}); 
listingSchema.method('applyPrice', function() { 
    this.price = priceFromString(this.title); 
}); 

mongoose.model('Listing', listingSchema); 
var Listing = mongoose.model('Listing'); 

var listing = new Listing({ title: 'Title' }); 
listing.applyPrice(); 
+0

Oui, c'est ainsi que je définis le schéma, bien qu'il soit dans un fichier séparé, d'où Schema.listingSchema. Mes modèles ont bien fonctionné pendant un certain temps, jusqu'à ce que j'essaie d'ajouter la fonction middleware. J'ai ajouté une autre ligne pour initialiser le schéma séparément de la définition de la liste, toujours avec la même erreur. Voyez-vous une différence entre ce que je fais et ce que vous avez là? – FrederickCook

+0

Avez-vous déjà résolu ceci? J'ai un problème très similaire où je ne peux pas accéder aux fonctions du modèle lorsqu'elles sont placées dans un fichier séparé. – Jorre

Questions connexes