2017-06-11 33 views
1

我正在尝试构建一个适用于大学的MEAN Stack应用程序,我对这个东西很新。我做了一个关于如何实现登录和注册的教程。目前,npm start告诉我新模式不是构造函数。我已经找到了答案,但无法真正找到答案。因此,继承人我的代码:NodeJS中的Mongoose模式TypeError:模式不是构造函数

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

的这里是错误消息:

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

我也查猫鼬的文件,但我对我的类的东西没有看坏。 预先感谢您的帮助!

回答

1

尝试使用大写字母模式:的

//     v 
var Schema = mongoose.Schema 

代替

var Schema = mongoose.schema; 
+0

谢谢@maxpaj!有时候,小事会导致你的代码崩溃:D – dominikger

相关问题