2017-10-08 1 views
0

je suis en train de construire la connexion et le système d'enregistrement à l'aide nœud et passeport c'est le schémaschéma unique, mais une erreur de schéma encore l'imbrication est indiqué

(modèles/user.js)

var mongoose = require('mongoose'); 
var bcrypt = require('bcryptjs'); 

//User Schema 
var UserSchema = mongoose.Schema({ 
    username: { 
     tye: String, 
     index: true 
    }, 
    password: { 
     type: String 
    }, 
    email: { 
     type: String 
    }, 
    name: { 
     type: String 
    } 
}); 

var User = module.exports = mongoose.model('User', UserSchema); 

module.exports.createUser = function(newUser, callback){ 
    bcrypt.genSalt(10, function(err, salt) { 
    bcrypt.hash(newUser.password, salt, function(err, hash) { 
     newUser.password = hash; 
     newUser.save(callback); 
    }); 
}); 
} 

j'ai utilisé uniquement schéma unique UserSchema

l'erreur est

C:\xampp\htdocs\loginapp\node_modules\mongoose\lib\schema.js:646 
    throw new TypeError('Undefined type `' + name + '` at `' + path + 
    ^

TypeError: Undefined type `undefined` at `username.index` 
    Did you try nesting Schemas? You can only nest using refs or arrays. 
    at Function.Schema.interpretAsType (C:\xampp\htdocs\loginapp\node_modules\mongoose\lib\schema.js:646:11) 
    at Schema.path (C:\xampp\htdocs\loginapp\node_modules\mongoose\lib\schema.js:502:29) 
    at Schema.add (C:\xampp\htdocs\loginapp\node_modules\mongoose\lib\schema.js:383:12) 
    at Schema.add (C:\xampp\htdocs\loginapp\node_modules\mongoose\lib\schema.js:372:14) 
    at new Schema (C:\xampp\htdocs\loginapp\node_modules\mongoose\lib\schema.js:104:10) 
    at Mongoose.Schema (C:\xampp\htdocs\loginapp\node_modules\mongoose\lib\schema.js:75:12) 
    at Object.<anonymous> (C:\xampp\htdocs\loginapp\models\user.js:5:27) 
    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> (C:\xampp\htdocs\loginapp\routes\users.js:4:12) 
    at Module._compile (module.js:570:32) 

ceci est mon fichier de routage (itinéraires/user.js)

var express = require('express'); 
var router = express.Router(); 

var user = require('../models/user'); 

//Register 
router.get('/register', function(req,res){ 
    res.render('register'); 
}); 

//Login 
router.get('/login', function(req,res){ 
    res.render('login'); 
}); 

//Register User 
router.post('/register', function(req,res){ 
    var name = req.body.name; 
    var email = req.body.email; 
    var username = req.body.username; 
    var password = req.body.password; 
    var password2 = req.body.password2; 

    //Validation 
    req.checkBody('name', 'Name is required').notEmpty(); 
    req.checkBody('email', 'Email is required').notEmpty(); 
    req.checkBody('email', 'Email is not valid').isEmail(); 
    req.checkBody('username', 'Username is required').notEmpty(); 
    req.checkBody('password', 'Password is required').notEmpty(); 
    req.checkBody('password2', 'Password do not match').equals(req.body.password); 

    var errors = req.validationErrors(); 
    if(errors){ 
     res.render('register', { 
      errors: errors 
     }); 
    } 
    else{ 
     var newUser = new User({ 
      name: name, 
      email: email, 
      username: username, 
      password: password 
     }); 
     User.createUser(newUser, function(err, user){ 
      if(err) throw err; 
      console.log(user); 
     }); 

     req.flash('success_msg', 'You are registered and can now login'); 
     res.redirect('/users/login'); 
    } 
}); 


module.exports = router; 

je suis incapable de trouver l'erreur il dit que vous avez imbriqué schémas donc refs d'utilisation mais je n'utilisé que seul schéma je suis en train de cameit J'essaye de construire un système de connexion et d'enregistrement en utilisant le noeud et le passeport mon app.js fonctionnait parfaitement après avoir inclus le schéma l'erreur est venue de dire que vous avez des schémas imbriqués donc utilisez refs mais Je n'ai utilisé qu'un seul schéma

Répondre

0

Vous avez une faute de frappe sur la déclaration de type pour username.

username: { 
    tye: String, // typo here, should read 'type' 
    index: true 
},