2016-04-16 3 views
0

Я пытаюсь взять пользовательский ввод и сохранить его в коллекции в моей базе данных. Я использую Node.js, mongodb, mongoose, express.js и ajax.Как опубликовать данные из module.exports в node.js

В настоящее время я пытаюсь взять сообщение, когда пользователь отправляет форму и берет ввод и сохраняет его в моей базе данных изнутри моего 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; 

Я использую шаблон Рулей для моих взглядов.

Итак, есть ли все это в моем модуле.exports возможная вещь для достижения? Нужно ли пытаться написать функцию вне моего module.exports, чтобы сделать эту работу? Если вам нужно увидеть любой из моих других файлов, просто дайте мне знать. Любая помощь очень ценится.

ответ

0

Вы не проясняют вопрос у вас есть, так что я постараюсь предоставить вам некоторую общую помощь:

организации вашей статьи применима экспресс-приложение, которое вы должны определенно взглянуть на версии 4, введенной Routers. Вы можете привязать свои маршруты непосредственно к объекту маршрутизатора и таким образом разделить свою логику на разные файлы (модули).

Ваш 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')) 

... 

Теперь просто требуют вашего мангуст моделей внутри ваших контроллеров по мере необходимости.

Это даст вам более модульный и структурированный дизайн приложения.

Надеюсь, это поможет.

Смежные вопросы