Model view controller 在node.js中正确分离关注点?

Model view controller 在node.js中正确分离关注点?,model-view-controller,node.js,mongodb,mongoose,separation-of-concerns,Model View Controller,Node.js,Mongodb,Mongoose,Separation Of Concerns,我是一个彻头彻尾的node.js noobie,正试图找出一种最佳的方法,通过适当的关注点分离来构建我的应用程序 我通过mongoose使用mongodb,并已成功地使用node.js模块分离出我的控制器,然后尝试分离出我的模型。我所做的似乎是可行的,但当我检查数据库时,什么都没有保存。另外,我在save函数中尝试了一个console.log(),但没有记录任何内容 从my server.js中,我有: app.post(api.urlslug + '/messages', messagesap

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

我通过mongoose使用mongodb,并已成功地使用node.js模块分离出我的控制器,然后尝试分离出我的模型。我所做的似乎是可行的,但当我检查数据库时,什么都没有保存。另外,我在save函数中尝试了一个
console.log()
,但没有记录任何内容

从my 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);
}
my/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。

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

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

乍一看,我不确定,但我认为您可能在“正确地与mongodb进行通信”这一点上错了。更可能的是,它没有与MongoDB通信,但Mongoose为您创建了_id(是的,它能够做到,这是Mongo Objectid规范的一部分),但仍然不确定出了什么问题。您确定调用了
导出.insert
?Moverover,您是如何测试“消息”未持久化到MongoDB的?最好的检查方法是在任何平台上使用Mongo CLIbe@Geert-Jan这在_id上是有意义的。很可能是mongoose创建了id。是的,我使用Mongo CLI检查了MongoDB,但没有创建任何文档。可能是您问题的标题不是您真正要问的吗?您谈到了关注点分离,但您的问题似乎应该是“为什么我的MongoDB文档没有被保存?”@Pickels我认为这并不准确,因为如果我将所有这些放在一个文件中,它会很好地写入MongoDB服务器。所以,我的问题是,当我试图将关注点适当分离时。我不知道我是否正确地完成了这一部分。我自己也不知道MongoDB。我看到的唯一一件事是您执行
返回res.send(message)在保存回调之外。