2016-04-16 24 views
0

我正在嘗試接受用戶輸入並將其保存到數據庫中的集合中。我正在使用Node.js,mongodb,mongoose,express.js和ajax。如何從node.js中的module.exports發佈數據

我目前正試圖在用戶提交表單並接受輸入並將其保存到我的控制器文件中的module.exports內部的數據庫時發帖。

當所有的代碼都在server.js裏面的一個地方時,我能夠完成這項工作,但是試圖將我的代碼恰當地分開,我嘗試將它分離爲一個MVC系統。

我addProductGroup控制器看起來是這樣的:

//bring in models of data 
var groups = require('../models').Groups; 
var express = require('express'); 
var app = express(); 

//page functions go inside of module.exports 
module.exports = { 
    index: function(req, res){ 
     groups.find({}, function(err, groups){ 
      if(err){ 
       console.log(err); 
      }else{ 
       res.render('addProductGroup',{title: 'Admin Add Group', adminloggedin: true, subtitle: 'Add a Group', underheaderp: ''}); 

    app.post('/admin/addProductGroup', function(req,res){ 
    var newGroupName = req.body.groupname; 
    new groupName({ 
     groupName: req.body.groupname, 
    }).save(function(err, doc){ 
     if(err){ 
      res.json(err) 
     } 
     else { 
      res.render('addProductGroup',{title: 'Admin ASS Group', adminloggedin: true, subtitle: 'Add a Group', underheaderp: ''}); 
     } 
    }); 
}); 
      } 
}); 
    } 
} 

我的控制器是從我的收藏羣體得到我的數據,然後呈現在我的網頁。然後,當用戶發佈數據時,我試圖使其發佈數據,將其保存到我的數據庫,然後呈現相同的確切頁面。我在嵌套我的功能和操作順序方面發揮了很大的作用。

我groups.js型號:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var GroupsSchema = new Schema ({ 
    groupName: String 
}); 

module.exports = mongoose.model('groups', GroupsSchema); 
var groupName = module.exports; 

我使用的是車把模板我的看法。

那麼,在我的模塊中具有所有這些。導出一個可能的事情來完成? 我是否需要嘗試在我的module.exports之外編寫一個函數來完成此工作? 如果您需要查看我的其他文件,請讓我知道。 任何幫助,不勝感激。

回答

0

你不明確你有問題,所以我會盡力爲您提供一些一般性幫助:

關於組織您的Express應用程序,你應該definitly看看介紹Routers的第4版。 您可以直接在路由器對象上綁定路由,並將您的邏輯分成不同的文件(模塊)。

你party.js路由器可能看起來像:

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

router.get('/paricipants', function(req, res) { 
    res.send('dave','mike') 
}) 

module.exports = router 

你可以在你的控制器目錄(即/控制器)幾個這樣的路由器(控制器)。充分利用module.exports功能,你現在可以在這個目錄中放置一個index.js文件,然後默認加載,因爲你需要該目錄。在你的控制器目錄

你index.js文件可能看起來像:

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

router.use('/party', require('./party')) 

// Your other routes to controllers and eventually global routes here. 

module.exports = router 

然後,您可以簡單地要求你app.js這一個模塊:

var app = express() 

app.use(require('./controllers')) 

... 

現在只是需要你的貓鼬當你需要它們時,你的控制器內的模型。

這會給你一個更模塊化和結構化的應用程序設計。

希望它有幫助。

相關問題