我的路线是在外部文件夹中定义的
./路由
这是我在server.js文件中定义路由的方式
app.get('/', routes.index);
app.post('/validation', register.valid);
register.valid模块,最初用
编写./路由/ validation.js
负责创建新用户帐户并将其注册到数据库(MongoDB)。
如何从validation.js中的server.js访问对象?首先,我认为在定义路由之前声明对象会解决问题,但实际上它似乎不是解决方案。
答案 0 :(得分:0)
通常在这种结构中server.js
将创建app
对象,然后通过函数将其传递给各个路径模块。我这样做是让每个路由器模块导出一个这样的函数:
//routes/validation.js
function setup(app) {
app.get(....blah
app.post(....blah
}
module.exports = setup;
然后我在server.js
中将它们绑在一起:
//server.js
var express = require('express');
var app = express();
require('./routes/validation')(app);
有关其他代码组织提示,另请参阅我的express_code_structure示例项目。
答案 1 :(得分:0)
我假设您当前的代码已经工作(即,您收到发布的数据),但您需要访问validation.js中的另一个对象。
如果你的代码有效,那么你可能在server.js中有这一行:
var register = require('./routes/validation');
您需要访问验证模块中的变量obj
。你可以在验证模块中有一个函数:
var foo;
exports.configure = function(obj) {
foo = obj;
}
导出意味着变量configure
可供“需要”验证模块的模块访问。这样你就可以在server.js
模块中执行:
register.configure(obj);
app.post('/validation', register.valid);
具体配置取决于您实际要完成的任务。有时,例如,将数据库对象存储在全局变量中是件好事。