Nodejs基础:我如何以及在哪里使用require(模块)?

时间:2015-12-30 20:59:53

标签: javascript node.js mongodb

我刚开始玩nodeJs。目前我有这样的项目:

结构: - app.js - response.js

app.js代码:

var callback = require('./response.js');
var express = require('express');
var bodyParser = require('body-parser');

var app = express();
var port = process.env.PORT || 3000;

// body parser middleware
app.use(bodyParser.urlencoded({ extended: true }));

// test route
app.get('/', function (req, res) { res.status(200).send('Hello world!') });

app.post('/test', callback);

// error handler
app.use(function (err, req, res, next) {
  console.error(err.stack);
  res.status(400).send(err.message);
});

app.listen(port, function () {
  console.log('Slack bot listening on port ' + port);
});

我的回复.js是:

module.exports = function (req, res, next) {
  return res.status(200).json({
    attachments: [{ "test": "test" }})]
  });
}

正如你在这里看到的那样,我正在使用快速服务器来监听/测试端点的发布请求,并使用一些测试json来响应。

问题:我想使用mongo - 从数据库获取相同的数据,并在触发/ test端点时返回响应。 Mongodb教程指导我安装mongodb npm模块然后包含mongodb模块并完成剩下的工作,例如:

// Retrieve
var MongoClient = require('mongodb').MongoClient;

// Connect to the db
MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
  if(!err) {
    console.log("We are connected");
  }
});
  • 我可以在response.js中要求使用mongodb(require('mongodb'))吗?如果是,它应该在函数内部还是在module.exports之外?
  • 如果我在app.js中需要('mongodb'),有没有办法在response.js中使用它?

2 个答案:

答案 0 :(得分:2)

您可以在每个模块中要求任何您想要的内容。 使用只需要在所有范围之外(不在函数中)同步方法,并将阻止您的服务器。 在多个其他模块中需要相同的模块也是可以的。 node js知道不重新编译它。

希望它有用。

答案 1 :(得分:0)

是的,您可以在response.js中要求mongodb,它应该在出口之外。如果你在app.js中需要mongodb,你将无法在response.js中使用它。