2017-12-04 3 views
0

は、唯一のものは」私はmySqlを使用して、私は彼の周りのマングーススキーマ(ビデオの約7:14の周り)を設定する方法を考えなければならなかったので、私はユーザーモジュールを作成し、ユーザーロジックを作成するにプロパティを割り当てました。のNode.js「未定義のプロパティのfirstNameを設定することはできません」

ここでは、ユーザモジュールここ

//user.js in models 
var bcrypt = require('bcryptjs'); 

var User = { 
    firstName: "firstName", 
    lastName: "lastName", 
    email: "email", 
    username: "username", 
    password: "password", 
} 

module.exports = User; 

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

は、登録フォーム

// main.js in router folder 
var user = require('../models/user').User; 

router.post('/register', function(req, res){ 
    var firstName = req.body.firstName; 
    var lastName = req.body.lastName; 
    var email = req.body.email; 
    var username = req.body.username; 
    var password = req.body.password; 
    var cpassword = req.body.cpassword; 

    //Validation 
    // req.checkBody('firstName', 'First name is required!').notEmpty(); 
    // req.checkBody('lastName', 'Last name is required!').notEmpty(); 
    // req.checkBody('email', 'E-mail is invalid!').isEmail(); 
    // req.checkBody('username', 'Username is required!').notEmpty(); 
    // req.checkBody('password', 'Password is required!').notEmpty(); 
    // req.checkBody('cpassword', 'Passwords do not match!').equals(password); 

    var errors = req.validationErrors(); 
    if(errors){ 
     res.render('register', { 
      errors: errors 
     }); 
     console.log(errors); 
    } else { 
     var newUser = user; 

     newUser.firstName = firstName; 
     newUser.lastName = lastName; 
     newUser.email = email; 
     newUser.username = username; 
     newUser.password = password; 

     User.createUser(newUser, function(err, user){ 
      if(err) throw err; 
      console.log(user); 
     }); 

     req.flash('success_msg', 'You are now registered!'); 
     res.redirect('login'); 
    } 
}); 

のための私のルートである今、私は「未定義のエラーのプロパティのfirstNameを設定することはできません」になっておくが、私は、私がアクセスを持っていたと思ったですuser.jsモジュールからUserオブジェクトに移動しますか?私は彼がちょうどフォームの入力を使用してユーザーオブジェクトをインスタンス化し、いくつかのパスワードハッシュでそれを作成するように見えるものから見ることができます。

これは悪いアプローチであれば、これを簡単にするためのアイデアはまったく公開されています。私は完全に新しいノードです。私の上級プロジェクトは2週間で完了しますので、どんな助けも非常に高く評価され、upvotesとインターネットクレジットで報われます:)

答えて

0
次のようにあなたのuser.jsのを変更する必要があり

:これはあなたの問題のすべてを解決するだろう

//user.js in models 
var bcrypt = require('bcryptjs'); 

var User = { 
    firstName: "firstName", 
    lastName: "lastName", 
    email: "email", 
    username: "username", 
    password: "password", 
} 

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

s。

+1

私はこれを見つけられなかったのか分かりません...ありがとう、ニムロッド! –

0

User(大文字のU )以前のプログラムではなく、後で試しにと定義されていない変数userに、アクセス

var newUser = user; 
関連する問題