2016-12-15 3 views
1

이 노드 js app를 만든 다음 우편 배달부에서 시도했지만 mongodb와 관련된 요청을 할 때마다로드가 유지됩니다. 모델의 find 함수는 코드가 멈추고 콜백이 호출되지 않는 곳입니다.노드 js에서 mongodb 연결을 설정할 수 없습니다

는 '/

var express = require("express"), 
app = express(), 
bodyParser = require('body-parser'), 
methodOverride = require('method-override'), 
mongoose = require('mongoose'); 

//Connection to DB 
mongoose.connect('mongodb://localhost:27017/users', function(err, res) { 
    if(err) { 
    console.log('ERROR: connecting to Database. ' + err); 
    } 
}); 

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(methodOverride()); 

var models = require('./models/user')(app, mongoose); 
var userContoller = require('./controllers/user'); 

var router = express.Router(); 

router.get('/', function(req, res) { 
    console.log('GET'); 
    res.send("Hello World!"); 
}); 

app.use(router); 

var users = express.Router(); 

users.route('/users') 
    .get(userContoller.findAllUsers); 

app.use('/api', users); 

app.listen(3000, function() { 
    console.log("Node server running on http://localhost:3000"); 
}); 

모델을 app.js

exports = module.exports = function(app, mongoose){ 

var userSchema = new mongoose.Schema({ 
    userName: { type: String }, 
    password:  { type: Number } 
}); 

mongoose.model('User', userSchema); 

}; 

컨트롤러의 user.js /는 MongoDB를 서버 콘솔을 통해 시작

var mongoose = require('mongoose'); 
var User = mongoose.model('User'); 

//GET - Return all tvshows in the DB 
exports.findAllUsers = function(req, res) { 
    console.log('llega'); 
    User.find(function(err, users) { 
    if(err) res.send(500, err.message); 

    console.log('GET /users') 
     res.status(200).jsonp(users); 
    }); 
}; 

의 user.js하지만 난 돈 그것을 확인하는 방법을 안다.

감사합니다.

편집 :

내가 나를 테스트하고 문제를 해결하기 위해 쉽게 코드를했다. 코드가 이제 이것이며 mongodb에 연결되지 않습니다.

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 

var db = mongoose.connection; 
db.on('error', function() { 
    console.log('error'); 
}); 
db.once('open', function() { 
    console.log('connected'); 
}); 

콘솔에 오류가 발생하거나 연결되지 않습니다.

mongod 콘솔에서 새로운 연결이되었다는 메시지가 나타납니다. 이것은 nodejs 프로그램을 열 때마다 발생합니다. 감사합니다

+0

왜 jsonp입니까? 저 슨이라고 했니? –

+0

json을 반환하는 express 함수입니다 – Fausto

+0

터미널을 열고 mongo를 입력하여 mongo가 제대로 작동하는지 확인할 수 있습니다. – Finn

답변

1

문제는 당신이 mongoose.connect 함수를 다시 호출하는 것입니다.

mongoose.connect(url, options) 
const db = mongoose.connection 

db.on('error', function() { console.log('Cannot Connect to DB') }) 
db.once('open', function() { console.log('Mongoose Connected to DB') }) 

또한 대신 :

users.route('/users').get(userContoller.findAllUsers);

당신은 시도 할 수 있습니다 : 내 경우에는 내가 한

users.get('/users', userController.findAllUsers);

을 그리고 난 당신이 next를 통과하지 못한 것을 깨달았다 당신이 통과하지 못한다면 표현하는 컨트롤러에 대한 논쟁은 일반적으로 불평합니다.

편집 : 나는 오류를 발견했다고 생각합니다.

.find 함수를 사용할 때 2 개의 인수를 전달해야합니다. 콜백을 두 번째 인수로 전달하지 않기 때문에 호출되지 않습니다.

User.find({}, callback)해야합니다.

+0

나는 그랬지만 똑같은 일이 일어났습니다. ( – Fausto

+0

나는 아마 당신이 그것을 확인해야하는 대답을 업데이트했다. –

+0

질문을 편집했습니다. 문제는 몽구스 연결에있는 것 같습니다. – Fausto

0

문제점을 발견했습니다.

mongoose의 버전이 내 mongodb 버전에 연결하는 데 필요한 것보다 오래되었습니다. npm을 통해 업데이트하고 잘 진행하십시오.

관련 문제