首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >nodejs路由导入模块

nodejs路由导入模块
EN

Stack Overflow用户
提问于 2018-05-30 06:33:46
回答 1查看 489关注 0票数 0

我已经在index.js文件中声明了socket.io,并且我将把soket对象传递给路由模块。

代码语言:javascript
复制
const express = require('express');
const app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var MongoClient = require('mongodb').MongoClient;
var server = require('http').Server(app);
var io = require('socket.io')(server);
var routes = require('./routes/routes')(io);

const dbb = mongoose.connect("mongodb://xxx:xxx@ds137600.mlab.com:37600/tasksdb");
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));

app.use('/', routes);
var server= app.listen(3000, function () {
    console.log('Example app listening on port 3000!')
})

routes.js

代码语言:javascript
复制
var express = require("express"); // call express
var taskSchema = require("../models/taskModel");
var mongoose = require("mongoose");
var router = express.Router(); // get an instance of the express Router

router
    .route("/tasks")
    .post(function (req, res, next) {
        ....
    });
router
    .route("/tasks")
    .get(function (req, res) {
        ....
    });
module.exports = router;

如何将其传输到routes.js?有什么不同的方法呢?我仍然不能很好地理解模块的工作原理

EN

回答 1

Stack Overflow用户

发布于 2018-05-30 07:35:13

对于服务器:

代码语言:javascript
复制
const app = express();

app.use(logger('tiny'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use((req, res, next) => {
  const origin = req.headers.origin;
  if (allowed_header.indexOf(origin) > -1) {
    res.header('Access-Control-Allow-Origin', origin);
  }
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, gutsyJwt, Accept'
  );
  next();
});

app.io = require('socket.io')({
  origins: ['*:*'],
});

require('./routes')(app);

module.exports = app;

然后在路由中:

代码语言:javascript
复制
module.exports = app => {
  app.post('/api/bar', (req, res) =>
   fooController.bar(req, res, app.io)
  );
};

然后在控制器中:

代码语言:javascript
复制
module.exports = {
  bar(req, res, io) {
    io.emit('message', req.body.message);
    res.status(200).send({msg: 'Message broadcasted!'});
  },
};

在这篇文章中,如果你需要更多的参考,它也会问类似的问题。ExpressJS how do I pass objects with state (eg. connections)?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50593925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档