11 votes

(Node.js/Express.js) Erreur : Le schéma n'a pas été enregistré pour le modèle "document"

J'ai essayé de travailler sur le tutoriel nodepad sur Dailyjs.com (j'ai trouvé aquí ). J'ai fini par m'arrêter lorsque j'ai reçu ceci en essayant d'exécuter (après l'étape 2 du tutoriel) :

Error: Schema hasn't been registered for model "Document".
Use Mongoose.define(name, schema)
    at Mongoose.model     (/usr/local/lib/node/.npm/mongoose/1.0.16/package/lib/mongoose/index.js:138:13)
    at Object.<anonymous> (/root/Repos/nodepad/models.js:3:10)
    at Module._compile (module.js:374:26)
    at Object..js (module.js:380:10)
    at Module.load (module.js:306:31)
    at Function._load (module.js:272:10)
    at require (module.js:318:19)
    at Object.<anonymous> (/root/Repos/nodepad/app.js:10:16)
    at Module._compile (module.js:374:26)
    at Object..js (module.js:380:10)

La plupart du temps, je suis un noob complet, donc ce dont j'ai vraiment besoin n'est pas tant une réponse du type "faites ceci pour que ça marche", mais si vous le voulez bien, une explication sur la cause réelle de cette erreur. Je peux poster le code que j'ai maintenant si nécessaire, et je m'excuse si c'est un problème d'une simplicité affligeante.

modèles.js :

var mongoose = require('mongoose');

mongoose.model('Document', {
    properties: ['title', 'data', 'tags'],
    indexes:    ['title']
});

exports.Document = function(db) {
    return db.model('Document');
};

25voto

schaermu Points 6251

Depuis Mongoose 1.0, vous devez définir vos modèles d'une manière différente. Pour voir comment cela s'applique à nodepad, je recommande de lire la section source de nodepad (notamment le fichier models.js ).

Exemple :

var mongoose = require('mongoose'),
  Schema = mongoose.Schema;

var User = new Schema({
  email: {
    type: String,
    index: { unique: true }
  },
  name: String,
  lastseen: Date,
  isonline: Boolean,
  hashed_password: String,
  salt: String
});

mongoose.model('User', User);

Malheureusement, les "anciens" articles de blog du tutoriel DailyJS (absolument génial) sont un peu dépassés. Alex Youg a publié quelques posts de suivi pour migrer le tutoriel existant vers Mongoose 1.0 (qui a introduit des changements d'API très importants), voir aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X