2016-04-16 6 views
0

Ich versuche, eine Benutzereingabe zu nehmen und sie zu einer Ansammlung in meiner Datenbank zu speichern. Ich benutze Node.js, mongodb, mongoose, express.js und ajax.Wie man Daten von module.exports in node.js schreibt

Ich versuche derzeit, die Post zu nehmen, wenn der Benutzer das Formular übergibt und die Eingabe und speichern Sie es in meiner Datenbank aus meinem Modul.exports in meiner Controller-Datei.

Ich konnte diese Arbeit machen, wenn der gesamte Code an einer Stelle innerhalb der server.js war, aber in einem Versuch, meinen Code auseinander zu brechen versuche ich in ein MVC-System zu trennen.

Mein addProductGroup Controller sieht wie folgt aus:

//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: ''}); 
     } 
    }); 
}); 
      } 
}); 
    } 
} 

Mein Controller meine Daten von meinem Gruppen Sammlung wird immer und dann meine Seite zu machen. Wenn der Benutzer dann die Daten veröffentlicht, die ich versuche, die Postdaten zu übernehmen, speichern Sie sie in meiner Datenbank und rendern Sie dann die gleiche Seite. Ich habe viel mit der Verschachtelung meiner Funktionen und Reihenfolge der Operationen gespielt.

Mein groups.js Modell:

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

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

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

ich für meine Ansichten, die einen Lenker Vorlage verwenden.

Also ist all das in meinem Modul.exports eine mögliche Sache zu erreichen? Muss ich eine Funktion außerhalb meiner modul.exports schreiben und schreiben, damit dies funktioniert? Wenn Sie irgendwelche meiner anderen Dateien sehen müssen, lassen Sie es mich wissen. Jede Hilfe wird sehr geschätzt.

Antwort

0

Sie klären nicht das Problem, das Sie haben, also werde ich versuchen, Ihnen einige allgemeine Hilfe zu leisten:

Bezüglich Ihrer ausdrücklichen Antrag zu organisieren Sie auf jeden Fall einen Blick auf die Version 4 Routers eingeführt nehmen sollte. Sie können Ihre Routen direkt an das Router-Objekt binden und so Ihre Logik in verschiedene Dateien (Module) unterteilen.

Ihr party.js Router könnte wie folgt aussehen:

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

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

module.exports = router 

Sie mehrere solcher Router haben können (Controller) in die Controller-Verzeichnis (d/Controller). Wenn Sie die Funktionalität von module.exports voll ausnutzen, können Sie jetzt eine Datei index.js in dieses Verzeichnis einfügen, das dann standardmäßig geladen wird, da Sie das Verzeichnis benötigen.

Ihre index.js Datei in Ihrem Controller-Verzeichnis könnte wie folgt aussehen:

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

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

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

module.exports = router 

Sie können dann einfach diese ein Modul benötigen in Ihrem app.js:

var app = express() 

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

... 

Jetzt benötigen nur Ihre Mungo Modelle innerhalb Ihrer Controller, wie Sie sie brauchen.

Dadurch erhalten Sie ein modulares und strukturiertes Anwendungsdesign.

Ich hoffe, es hilft.

Verwandte Themen