2016-06-11 2 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'docs는 null이 아니기 때문에'docs.length'라는 오류 메시지가 나타납니다. – Bolboa

+0

문서가 실제로 데이터베이스에 있는지 확인 했습니까? – Kairat

답변

0

시도해보십시오. docs.length !== 0 이것은 확인 문서 필드가 존재하거나 비어 있습니다.

1

개체가 컬렉션에 없으면 docs의 값은 null이됩니다.

사용자가 잘못된 자격 증명을 입력하면 null 개체에 docs.length이 호출되어 오류가 발생합니다. 대신개체에 length을 호출하는 것을 피하려면 docs != null을 사용하십시오.

관련 문제