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!
Merci @maxpaj! Parfois, les petites choses plantent votre code: D – dominikger