2013-11-20 2 views
0

Я использую экспресс-узел js для моего проекта перенаправления. Я только начинаю в узле jes. Я не знаю, где определить логику базы данных.где определить логику базы данных в экспресс?

Цель: - Получение 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';

ответ

1

Обычно вы создаете Модели для обработки логики базы данных. Общая картина

  • app.js - список всех ваших маршруты
  • routesX.js - обрабатывает код для маршрутов (скажем,/х/что угодно). Здесь вы оцениваете значения HTTP, такие как querystring, cookie и данные формы. Отображает представление после вызова модели.
  • modelsX.js - обрабатывает логику домена для маршрутов (в том числе доступ к базе данных)

Так, например, в routesX.js вы могли бы иметь что-то вроде этого:

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

exports.blogAll = function(req, res) { 

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

} 

и в вашем modelsX.js вы могли бы иметь что-то вроде этого:

exports.getAll = function(callback) { 

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

} 

Если вы хотите, чтобы увидеть полный пример из конца в конец, проверить этот репозиторий: https://github.com/hectorcorrea/hectorcorrea.com/blob/master/routes/blogRoutes.js

Смежные вопросы