Mongo型号没有响应

时间:2016-01-24 04:29:52

标签: node.js mongodb

我正在开发一款新应用,并尝试在本地设置mongo进行存储。我的api端点受到了攻击,但是一旦我尝试实际调用db操作 - 查找或保存 - 它就没有响应。

<br/>

这是架构:

数据/ item.js

var express = require('express');
var router = express.Router();

var bodyParser = require('body-parser');

var mongoose = require('mongoose');
var Person = require('./data/person');
var dbConfig = require('./config');
//database: 'mongodb://localhost:27017/persondb'
var db = mongoose.createConnection(dbConfig.database);
db.on('error', function() {
    console.info('Error: Could not connect to MongoDB. Did you forget      to run `mongod`?');
});

if (~process.argv.indexOf('mode_dev')) {
    global.mode_dev = true;
    console.log('Server started in dev mode.');
}


// configure app to use bodyParser()
// this will let us get the data from a POST
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

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

router.route('/persons')
    .post(function(req, res) {
        debugger;
        var person = new Person();      // create a new instance of the Person model
        person.name = req.body.name;

        person.save(function(err) {
            debugger;
            if (err)
                res.send(err);

            res.json({ message: 'Person created!' });
        });
    })
    .get(function(req, res) {
         Person.find(function(err, persons) {
            debugger;
            if (err)
                res.send(err);

            res.json(persons);
        });
    });

我在启动网络服务器之前运行mongod。一旦我到达.save或.find调用,就不会抛出任何错误,但回调函数永远不会被触发。

1 个答案:

答案 0 :(得分:1)

我会这样连接:

mongoose.connect("mongodb://localhost/persondb");

var db = mongoose.connection;

也许this会帮助它解释使用mongoose.createConnection(

的问题
  

如果使用createConnection,如果包含已注册的模型,则需要始终引用该连接变量,否则如果使用mongoose加载模型,它将永远不会实际与数据库通信。

     

另一种解决方案是简单地使用mongoose.connect而不是   mongoose.createConnection。然后你可以使用   mongoose.model('MyModel')无需加载所请求的模型   携带该数据库连接变量。