我刚开始玩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");
}
});
答案 0 :(得分:2)
您可以在每个模块中要求任何您想要的内容。 使用只需要在所有范围之外(不在函数中)同步方法,并将阻止您的服务器。 在多个其他模块中需要相同的模块也是可以的。 node js知道不重新编译它。
希望它有用。
答案 1 :(得分:0)
是的,您可以在response.js中要求mongodb,它应该在出口之外。如果你在app.js中需要mongodb,你将无法在response.js中使用它。