简体   繁体   中英

Error connecting to mongolab using node.js and mongoose

I'm trying to write an API using mongoose and mongolab.

Here is my code :

./index.js

var express    = require('express');        
var app        = express();                 
var bodyParser = require('body-parser');
var mongoose = require('mongoose');

mongoose.connect('mongodb://user:pass@****.mlab.com:*****/****');

var Bear = require('./app/models/bear');

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



var port = process.env.PORT || 8080;

var router = express.Router();

router.use(function(req, res, next){
    console.log('request called');
    next();
});

router.get('/', function(req, res) {
    res.json({ message: 'in /' });   
});

router.route('/bears')

    .post(function(req, res) {

        var bear = new Bear();      
        bear.name = req.body.name;
        console.log(bear.name);
        bear.save(function(err) {
            console.log('in save')
            if (err)
                res.send(err);

            res.json({ message: 'Bear created!' });
        });

    });

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

app.listen(port);
console.log('connected to port ' + port);

and

./app/models/bear.js

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var BearSchema   = new Schema({
    name: String
});

module.exports = mongoose.model('Bear', BearSchema);

My problem is, when I try the following request :

邮差

It doesn't return anything. I tried to console.log something in bear.save but in never goes in.

I don't get what I am doing wrong. Also when I try to connect to my mongolab db from my terminal it works perfectly well.

There's a problem with your index.js. Here, use this code:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
var Bear = require('./bear');
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;
var router = express.Router();
router.use(function (req, res, next) {
    console.log('request called');
    next();
});
router.get('/', function (req, res) {
    res.json({
        message: 'in /'
    });
});
/*router.route('/bears')*/
    router.post('/bears', function (req, res) {
        console.log("request: " + JSON.stringify(req.body));
        var bear = new Bear();
        bear.name = req.body.name;
        console.log(bear.name);
        bear.save(function (err) {
            console.log('in save')
            if (err)
                res.send(err);
            res.json({
            message: 'Bear created!'
        });
    });
});
app.use('/api', router);
app.listen(port);
console.log('connected to port ' + port);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM