如何从node.js中的module.exports发布数据

时间:2016-04-16 23:48:08

标签: javascript node.js mongodb express mongoose

我正在尝试接受用户输入并将其保存到我的数据库中的集合中。我正在使用Node.js,mongodb,mongoose,express.js和ajax。

我正在尝试在用户提交表单时接收帖子并接受输入并将其从我的控制器文件中的module.exports内部保存到我的数据库中。

当所有代码都在server.js中的一个位置时,我能够完成这项工作,但是为了试图将我的代码分开,我试图分离成一个MVC系统。

我的addProductGroup控制器如下所示:

D2

我的控制器从我的群组集合中获取数据,然后渲染我的页面。然后,当用户发布数据时,我试图使其获取发布数据,将其保存到我的数据库,然后呈现相同的页面。我在功能和操作顺序的嵌套方面做了很多工作。

我的groups.js型号:

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

我正在使用车把模板来查看我的观点。

所有这些都在我的模块中。出口可能要完成的事情是什么? 我是否需要尝试在module.exports之外编写一个函数来使其工作? 如果您需要查看我的其他任何文件,请告诉我。 任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:0)

你没有澄清你的问题,所以我会尽力为你提供一些帮助:

关于组织您的快速申请,您绝对应该看一下引入的第4版Routers。 您可以直接在路由器对象上绑定路由,从而将逻辑分成不同的文件(模块)。

你的party.js路由器看起来像:

var knex = require('knex')(config.knex);
var bookshelf = require('bookshelf')(knex);
bookshelf.plugin('registry')

var Tag = bookshelf.Model.extend({
tableName: 'tag',
category: function() {
    return this.belongsTo('Category');
},
events: function() {
    return this.belongsToMany(Event, 'event_tag');
},
});
module.exports = bookshelf.model('Tag', Tag);

您的控制器目录中可以有多个这样的路由器(控制器)(即/控制器)。充分利用module.exports功能,您现在可以将index.js文件放在此目录中,默认情况下将根据您的需要加载该目录。

您的controllers目录中的index.js文件可能如下所示:

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

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

module.exports = router

然后您可以在app.js中只需要这个模块:

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

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

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

module.exports = router

现在只需要在控制器内部使用你的猫鼬模型。

这将为您提供更加模块化和结构化的应用程序设计。

希望它有所帮助。