【发布时间】:2015-03-26 20:38:43
【问题描述】:
我将全力以赴,只使用节点做一个项目。这很有趣,但有时我会有点迷失,当我感到困惑时,我想尝试获得理解,所以我正确地构建它并且不要太不知所措。无论如何,这是问题所在:
我有使用 Express 和 mysql 的 REST API。我设置了mysql:
app.js
//Variables, move these to env
var dbOptions = {
host: config.db_config.host,
user: config.db_config.user,
password: config.db_config.password,
port: config.db_config.port,
database: config.db_config.database
};
app.use(myConnection(mysql, dbOptions, 'single'));
然后我包含我的路由,将路由传递给应用程序和日志中间件,以便我可以在路由中使用它们:
app.js 续
var userRoute = require('./routes/users.js')(app,log);
app.use('/users', userRoute);
这实际上有点令人困惑,但现在我明白了,我必须将它们传递给模块才能让模块获取数据。
然后在我的路由文件中,我想使用一个对象,以便我可以在其他路由中使用相同的功能,但在用户文件中,以便使用与其他所有内容相同的连接池,或者至少不使用必须再次建立连接我必须将响应和请求传递给它?必须有更好的方法来做到这一点。这样真的很丑这是
的相关部分路由/users.js
var User = require('../controllers/User.js');
module.exports = (function(app,log) {
var userR = express.Router();
userR.post('/register', function(req,res){
var email = req.body.email;
var password = req.body.password;
var firstName = req.body.first_name;
var lastName = req.body.last_name;
var userId;
try {
var query;
var status = 200;
var response = '';
var newUser = {
email: email,
password:password,
first_name: firstName,
last_name: lastName,
password: password
};
var user = new User(req,res);
user.register(newUser);
...
};
控制器/User.js
module.exports = function User(req,res) {
this.id = 0;
this.register = function(newUser){
var _this = this;
var deferred = q.defer();
req.getConnection(function(err,connection){
...
这里一定有我遗漏的模式。我应该能够通过应用程序或其他东西并可以访问 req.getConnection 等。
谢谢。
【问题讨论】:
标签: node.js rest oop express node-mysql