0

我是一個完整的node.js noobie,並試圖找出構建我的應用程序的最佳方法,並將問題分離出來。在node.js中正確分離關注點本身?

我通過貓鼬使用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回來了,它甚至有什麼在我看來,作爲一個MongoDB的_id的領域提供了唯一的ID。因此,如果它似乎在創建對象並正確與mongodb進行通信,我無法理解爲什麼它實際上不會進入mongodb。

+0

我不確定乍一看,但我認爲你可能在'正確地與mongodb進行通信'時出錯了。更有可能它沒有與MongoDB溝通,而是Mongoose爲你創建了_id(是的,它能夠做到這一點,它是Mongo的Objectid規範之美的一部分)。但是,不知道發生了什麼問題。你確定'exports.insert'被調用? Moverover,你如何測試'消息'不會持久到MongoDB?最好的檢查方法是使用Mongo CLI在任何平臺上使用 –

+0

@ Geert-Jan對_id有幫助。這很可能是它貓鼬創建ID。是的,我使用Mongo CLI檢查了MongoDB,並沒有創建文檔。 –

+0

難道你的問題的標題實際上並不是你問的嗎?你談論關注點的分離,但看起來你的問題應該是「爲什麼我的MongoDB文檔沒有被保存?」 – Pickels

回答

0

聽起來好像沒有連接。嘗試收聽默認貓鼬連接的打開/錯誤事件以找出原因。

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