2017-06-11 3 views
1

Ich versuche, eine MEAN Stack-Anwendung für die Universität zu bauen, und ich bin ziemlich neu zu diesem Zeug. Ich habe ein Tutorial über die Implementierung von Login und Registrierung gemacht. Momentan sagt npm start, dass New Schema kein Konstruktor ist. Ich habe bereits nach einer Antwort gesucht, konnte aber keine wirklich finden. So heren mein Code:Mongoose-Schema in NodeJS TypeError: Schema ist kein Konstruktor

// 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 
    }; 

Eine hier ist die Fehlermeldung:

> [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) 

Ich habe auch die Dokumentation für Mungo aber ich mir die Art Dinge nicht schlecht aussehen. Vielen Dank im Voraus für Ihre Hilfe!

Antwort

1

Versuchen Groß für Schema mit:

//     v 
var Schema = mongoose.Schema 

statt

var Schema = mongoose.schema; 
+0

Danke @maxpaj! Manchmal crashen die kleinen Dinge deinen Code: D – dominikger

Verwandte Themen