Javascript 在express中在何处定义数据库逻辑?

Javascript 在express中在何处定义数据库逻辑?,javascript,node.js,express,Javascript,Node.js,Express,我正在使用express node js进行重定向项目。我只是express node js的初学者。 我不知道在哪里定义我的数据库逻辑 目标:-从数据库获取url并重定向到该url 我的目录结构:- app.js controller ---------index.js node_modules package.json public ------images ------stylesheet ------javascripts routes --

我正在使用express node js进行重定向项目。我只是express node js的初学者。 我不知道在哪里定义我的数据库逻辑

目标:-从数据库获取url并重定向到该url

我的目录结构:-

 app.js
 controller
     ---------index.js
  node_modules
  package.json
  public
  ------images
  ------stylesheet
  ------javascripts
  routes
  -----index.js
  views
app.js

var express = require('express')
, http = require('http')
, mysql = require('mysql')
, path = require('path');
var app = express();
var controller =  require('./controller')({app: app});

// all environments
 app.configure(function() {

app.set('port', process.env.PORT || 8888);
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'jade');
app.set('views', __dirname + '/views');
app.use(app.router);
app.get('/', function( req, res) {
res.render('index');
 });

 });        
 //connect to mysql database
 var connection = mysql.createConnection({
 host : 'localhost',
 user : 'root',
 password : 'xxxxx',
 database : 'nodejsmysql'
 });
 connection.connect();

 http.createServer(app).listen(app.get('port'), function(){
     console.log('Express server listening on port ' + app.get('port'));
 });
控制器

function controller(param)
  {
var app = param.app;

app.get('/id', function(request, response) {
    var id= request.param("id");
   // i need to use this id to fetch corresponding url from database and redirect that url.
 });
 }

module.exports = controller;

数据库查询:-从数据库中选择
url
,其中
id='id'

通常创建模型来处理数据库逻辑。一般的模式是

  • app.js-列出所有路线
  • RouteESX.js-处理路由的代码(比如/x/什么)。这是您评估HTTP值(如querystring、Cookie和表单数据)的地方。在调用模型后渲染视图
  • modelsX.js-处理路由的域逻辑(包括数据库访问)
例如,在RouteESX.js中,您可能会遇到如下情况:

var blogModel = require('./modelsX.js');

exports.blogAll = function(req, res) {

   blogModel.getAll(function(data) {
       res.render('someView', data);
   });

}
exports.getAll = function(callback) {

   // get data from the database here
   // and call the callback 
   callback()

}
在modelsX.js中,您可能有如下内容:

var blogModel = require('./modelsX.js');

exports.blogAll = function(req, res) {

   blogModel.getAll(function(data) {
       res.render('someView', data);
   });

}
exports.getAll = function(callback) {

   // get data from the database here
   // and call the callback 
   callback()

}
如果您想查看完整的端到端示例,请查看此回购: