2016-12-15 2 views
1

Я создал это приложение js для узла, а затем попытался с почтальоном, но каждый раз, когда я делал запрос, который включает mongodb, он продолжает загружаться. Поиск функции в модели - это то, где код останавливается и callback никогда не вызывается.Не удается установить соединение mongodb с узла js

app.js

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

модели/user.js

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

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

mongoose.model('User', userSchema); 

}; 

контроллеры/user.js

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

Сервер MongoDB запускается через консоль, но я не» t знать, как это проверить.

Спасибо!

EDIT:

Я сделал код проще для меня, чтобы проверить и решить эту проблему. Код теперь это, и я не получаю подключение к 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. Thanks

+0

Почему jsonp? Вы имели в виду json? –

+0

Является ли экспресс-функция возвратом json – 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 и хорошо пойдите.

Смежные вопросы