在node.js中本地正确分离关注点?

时间:2012-06-14 19:57:40

标签: model-view-controller node.js mongodb mongoose separation-of-concerns

我是一个完整的node.js noobie,试图通过适当分离关注点来找出构建我的应用程序的最佳方法。

我通过mongoose使用mongodb,并成功地使用node.js模块将我的控制器分离出来,并试图将我的模型分开。我已经离开了似乎工作,但当我检查数据库时没有保存任何东西。另外,我在保存功能中尝试了console.log(),没有记录任何内容。

来自我的server.js我有:

app.post(api.urlslug + '/messages', messagesapi.insert);

然后我有一个/controllers/api/messages.js:

var m = require('../../models/message');

exports.index = function(req, res, next){
    res.send('all the messages...');
}

exports.insert = function(req, res, next){
    var message;
    message = new m.Message({
        messagebody: req.body.messagebody
    });
    message.save(function(err) {
        console.log('here we are in the save');
        if(!err) {
            return console.log('message created');
        } else {
            return console.log(err);
        }
    });
    return res.send(message);
}

和我的/models/message.js看起来像这样:

// required modules
var mongoose = require('mongoose')
    , db = require('../models/db');

// setup database connection
mongoose.connect(db.connectionstring());

var Message = exports.Message = mongoose.model('Message', new mongoose.Schema({
    messagebody: String
}));

当我发布到API时,我得到一个正确的JSON,它甚至有_id字段,在我看来是mongodb提供的唯一ID。有了这个,我很难理解为什么它实际上没有进入mongodb,如果它似乎正在创建对象并正确地与mongodb通信。

1 个答案:

答案 0 :(得分:0)

听起来好像没有建立连接。尝试侦听默认mongoose连接的打开/错误事件以找出原因。

function log (msg) { console.log('connection: ', msg) }
mongoose.connection.on('open', log);
mongoose.connection.on('error', log);