这是demo.js文件,我想在server.js文件中使用这个文件,以便我可以在一个服务器文件中使用不同的js文件。
Demo.js:
app.get('/add User', function (req, res) {
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/project';
MongoClient.connect(url, function (err, db) {
var collection = db.collection('users');
collection.find({name: 'shruti'}).toArray(function (err, result) {
console.log(, result);
db.close();
});
Server.js:
var a = require('./demo.js');
vr http=require("http");
var server = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/html"});
response.write(a);
res.end();});
server.listen(7860);
答案 0 :(得分:1)
可能的样本如下:
<强> demo.js 强>
var myModule = {
defineRoutes: function(router){
//do something...
}
}
module.exports = myModule;
<强> server.js 强>
var myModule = require('demo.js');
myModule.defineRoutes(router);
答案 1 :(得分:0)
如上所述,您需要导出。 当你这样做时:
var item = require("mymodule");
要求返回一个对象,该对象是该给定文件的module.exports值的引用 - 在您的情况下为 demo.js。
您可以通过一些人向您展示的方式编写模块。因为它是封装的,所以你基本上都在识别什么是公共的或可以被调用的。几乎没有办法写它 - 你也可以这样做:
module.exports = {
yourCall: function () {
console.log("stuff here");
}
};
正如@ishann所说,谁在这里死了,你正在写一些你认为可能会被填充的东西。转到数据库并返回是一个异步调用 - 所以这需要时间去做,然后返回结果。
根据您的结构 - 理想情况下您要做的是分配路径(“/ addUser”),它将传递响应对象给您:
app.get('/add User', function (req, res) {
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/project';
MongoClient.connect(url, function (err, db) {
var collection = db.collection('users');
collection.find({name: 'shruti'}).toArray(function (err, result) {
console.log(, result);
db.close();
// set the type
res.writeHead(200, {"Content-Type": "application/json"});
res.write(result);
});
看起来您的代码需要一些重组,但是分离的问题很好。您可能还想查看Express as a framework节点。