我是一个完全 node.js 的菜鸟,并试图找出通过适当分离关注点来构建我的应用程序的最佳方法。
我正在通过 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。