2016-06-11 5 views
1
私は /routes/schema.jsファイルにある次のスキーマを使用してい

を使用して...私の/routes/register.jsファイルで複数の接続エラーノードJSとMongoDBの

var mongoose = require('mongoose'); 


var Schema = mongoose.Schema; 

var userSchema = new Schema({ 
    username: String, 
    password: String, 
    name: String, 
    last: String, 
    year: Number, 
    degree: String 

}); 

var User = mongoose.model('User', userSchema); 

module.exports = { 
    User: User 
} 

私はPOSTデータを使用していくつかの情報を格納しています...

var User = require('../routes/schema').User; 

exports.postRegister = function (req, res) { 
    var u = new User({ 
     username: req.body.reg_username, 
     password: req.body.reg_password, 
     name: req.body.reg_name, 
     last: req.body.reg_lastname, 
     year: req.body.reg_year, 
     degree: req.body.reg_degree 
    }); 

    u.save(function (err) { 
     if (err) { 
      throw err; 
     } 
     else { 
      console.log("saved"); 
      res.render('index', { title: 'Express' }); 

     } 
    }); 
} 

すべてがデータベースに保存されます。しかし今、このregister.jsファイルは、ユーザを/routes/index.jsにリダイレクトします。ここで、ユーザはデータベースに保存されている認証情報を使用してサインインする必要があります。

は、だから私は、ユーザー名とパスワードが私のデータベースにコレクションに一緒に存在するかどうかを確認する必要があり、私のindex.jsファイルで、私は次のことを試してみました...

var User = require('../routes/schema').User; 

exports.signin = function (req, res) { 
    User.findOne({ 
     username: req.body.log_username, 
     password: req.body.log_password 
    }, function (err, docs) { 
     if (docs.length) { 
      console.log("name exists"); 
     } 
     else { 
      console.log("no exist"); 
     } 
    }); 
}; 

私はと同じスキーマでfindOne機能を使用データベースのコレクションにユーザー名とパスワードが存在するかどうかを確認しますが、正しく動作しません。私は複数の接続エラーが発生したようで、私はそれを避ける方法を知らない。

すでにデータベースにある資格情報を使用してログインしようとすると、コンソールにno existが出力され、exports.signinのelse文に達しています。

+0

入手したエラーメッセージを投稿できますか? – Kairat

+0

@Kairat私が得る1つのエラーメッセージは 'docs.length'です。なぜなら、' docsはnullにできないからです。 ' – Bolboa

+0

文書が実際にあなたのデータベースに入っているかどうかチェックしましたか? – Kairat

答えて

0

お試しくださいdocs.length !== 0これは、docsフィールドが存在するか空であるかどうかです。

1

オブジェクトがコレクションに見つからない場合、docsの値はnullになります。

ユーザーが間違った資格情報を入力すると、ヌルオブジェクトでdocs.lengthが呼び出され、エラーが発生します。代わりにdocs != nullを使用して、nullオブジェクトにlengthを呼び出さないようにしてください。