2017-06-11 2 views
1

J'essaie de créer une application MEAN Stack pour l'université et je suis assez nouveau dans ce domaine. J'ai fait un tutoriel sur la façon de mettre en œuvre la connexion et l'enregistrement. Actuellement, le début de npm m'indique que le nouveau schéma n'est pas un constructeur. J'ai déjà cherché une réponse mais je n'ai pas vraiment trouvé de réponse. Donc, voici mon code:Schéma Mongoose dans NodeJS TypeError: Le schéma n'est pas un constructeur

// imported libraries--------------------- 
    var mongoose = require('mongoose'); 
    var Schema = mongoose.schema; 
    var crypto = require('crypto'); 
    var jwt = require('jsonwebtoken'); //generates our token which is required for 
    logging in 

    //Mongoose userScheme -------------------- 
    var userSchema = new Schema({ 
    email: { 
     type: String, 
     unique: true, 
     required: true 
    }, 
    name: { 
     type: String, 
     required: true 
    }, 
    //@arg hash: hashes provide security if the db is hacked --> password is 
    hashed 
    hash: String, 
    salt: String 
    }); 
    /* 
    The following setPassword method takes the password and salt to create 
    a safe password and a salt which is then synchronized with the the DB 
    This method runs with every user login/registration 
    */ 
    userSchema.methods.setPassword = function(password){ 
    this.salt = crypto.randomBytes(16).toString('hex'); 
    this.hash = crypto.pbkdf2Sync(password, this.salt, 1000, 64).toString('hex'); 

    }; 
    // checks if the entered password matches with the password stored in DB (hashed) 
    //returns a boolean 
    userSchema.methods.validPassword = function(password){ 
    var hash = crypto.pbkdf2Sync(password, this.salt, 1000, 64).toString('hex'); 
    return this.hash === hash; 
    }; 

    userSchema.methods.generateJwt = function(){ 
    var expiry = new Date(); 
    expiry.setDate(expiry.getDate()+7); //token expires seven days after creation 

    return jwt.sign({ 
     _id: this._id, 
     email: this.email, 
     name: this.name, 
     exp : parseInt(expiry.getTime()/1000), 

     }, "MY_SECRET"); //todo add this secret to mongo db 
    }; 

Un ici est le message d'erreur:

> [email protected] start /Users/Dominik/IDE/ideaProjects/groupup 
> node server.js 

/Users/Dominik/IDE/ideaProjects/groupup/SEBA_GroupUp/app_api/models/users.js:20 
var userSchema = new Schema({ 
       ^

TypeError: Schema is not a constructor 
    at Object.<anonymous> (/Users/Dominik/IDE/ideaProjects/groupup/SEBA_GroupUp/app_api/models/users.js:20:18) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (/Users/Dominik/IDE/ideaProjects/groupup/SEBA_GroupUp/app_api/models/db.js:53:1) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 

J'ai également vérifié la documentation mangouste mais je me les choses de type n'a pas mal paraître. Merci d'avance pour votre aide!

Répondre

1

Essayez d'utiliser des majuscules pour le schéma:

//     v 
var Schema = mongoose.Schema 

au lieu de

var Schema = mongoose.schema; 
+0

Merci @maxpaj! Parfois, les petites choses plantent votre code: D – dominikger