2017-06-11 87 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

相關問題