2016-08-16 2 views
0

Я пытаюсь получить доступ к базе данных mysql, используя node.js. Я просто запустить следующую команду в CMD строке:Как подключить node.js localhost в порту 80 с apache mysql в порту 90?

C:\rest-server> node bin/www 

и отображает это сообщение:

Express server listening in port 80 

и Я в .js файл следующим образом, какой доступ к LOCALHOST в порту 80:

var express = require('express'); 
var router = express.Router(); 
var async = require('async'); 

var util = require('../utils/util'); 
var db = require('../utils/database'); 
var connection = db.connection(); 

router.get('/login', function (req, res) { 
    if (req.session.manager) { 
    return res.redirect('/'); 
    } 

    if (req.query.tip == 'error') { 
    var tip = 'username or password incorrect!'; 
    } else { 
    var tip = null; 
    } 
    res.render('login', { tip: tip }); 
}); 

router.post('/login', function (req, res) { 
    var username = req.body.username; 
    var password = req.body.password; 
    var sql = 'SELECT * FROM restaurant_accounts WHERE ra_name=?'; 
    connection.query(sql, [username], function (err, result) { 
    if (err) throw err; 
    if (result.length == 0) { 
     return res.redirect('/manager/login?tip=error'); 
    } 
    var account = result[0]; 
    if (!util.checkHash(password, account.ra_password)) { 
     return res.redirect('/manager/login?tip=error'); 
    } 

    connection.query('SELECT * FROM restaurants WHERE rest_owner_id=?', [account.ra_id], function (err, result) { 
     if (err) throw err; 
     var restaurant = result[0]; 
     req.session.manager = { 
     id: account.ra_id, 
     name: account.ra_name, 
     rest_id: restaurant.rest_id, 
     rest_name: restaurant.rest_name 
     }; 
     res.redirect('/'); 
    }); 
    }); 
}); 

router.get('/logout', function (req, res) { 
    req.session.destroy(); 
    res.redirect('/manager/login'); 
}); 

module.exports = router; 

Когда я печатаю локальный: 80 в моем браузере отображается следующий экран:

enter image description here

Но, так как база данных не связана, я не могу пройти мимо этого шага, и он показывает «localhost отказался подключиться» ошибка!

У меня уже есть база данных .sql с необходимыми таблицами. Как связать эти два, чтобы я мог войти на страницу входа?

EDIT: database.js

var mysql = require('mysql'); 
var c = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'bjtu', 
    password : 'bjtu', 
    database : 'restaurant' 
}); 

// enable error logging for each connection query 
c.on('error', function(err) { 
    console.log(err.code); // example : 'ER_BAD_DB_ERROR' 
}); 

exports.connection = function() { 
    return c; 
}; 

CONSOLE ОШИБКА ДЛЯ SAMPLE.JS

if (err) throw err; 
     ^

Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'me'@'localhost' (using password: YES) 
    at Handshake.Sequence._packetToError (C:\Mrestro\RESTaurant_backend-master\rest-server\node_modules\mysql\lib\protocol\sequences\Sequence.js:51:14) 
    at Handshake.ErrorPacket (C:\Mrestro\RESTaurant_backend-master\rest-server\node_modules\mysql\lib\protocol\sequences\Handshake.js:103:18) 
    at Protocol._parsePacket (C:\Mrestro\RESTaurant_backend-master\rest-server\node_modules\mysql\lib\protocol\Protocol.js:280:23) 
    at Parser.write (C:\Mrestro\RESTaurant_backend-master\rest-server\node_modules\mysql\lib\protocol\Parser.js:74:12) 
    at Protocol.write (C:\Mrestro\RESTaurant_backend-master\rest-server\node_modules\mysql\lib\protocol\Protocol.js:39:16) 
    at Socket.<anonymous> (C:\Mrestro\RESTaurant_backend-master\rest-server\node_modules\mysql\lib\Connection.js:109:28) 
    at emitOne (events.js:77:13) 
    at Socket.emit (events.js:169:7) 
    at readableAddChunk (_stream_readable.js:153:18) 
    at Socket.Readable.push (_stream_readable.js:111:10) 
    -------------------- 
    at Protocol._enqueue (C:\Mrestro\RESTaurant_backend-master\rest-server\node_modules\mysql\lib\protocol\Protocol.js:141:48) 
    at Protocol.handshake (C:\Mrestro\RESTaurant_backend-master\rest-server\node_modules\mysql\lib\protocol\Protocol.js:52:41) 
    at Connection.connect (C:\Mrestro\RESTaurant_backend-master\rest-server\node_modules\mysql\lib\Connection.js:136:18) 
    at Object.<anonymous> (C:\Mrestro\RESTaurant_backend-master\rest-server\utils\sample.js:9:12) 
    at Module._compile (module.js:409:26) 
    at Object.Module._extensions..js (module.js:416:10) 
    at Module.load (module.js:343:32) 
    at Function.Module._load (module.js:300:12) 
    at Function.Module.runMain (module.js:441:10) 
    at startup (node.js:139:18) 

ответ

0

Модуль NPM mysql должен сделать трюк.

Basic подключения будет выглядеть следующим образом:

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'me', 
    password : 'secret', 
    database : 'my_db' 
}); 

connection.connect(); 

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) { 
    if (err) throw err; 

    console.log('The solution is: ', rows[0].solution); 
}); 

connection.end(); 

Вероятно, в скором времени вы хотели бы взглянуть на MongoDB. Что вы можете подключиться к использованию модуля mongoose, например.

Update:

Попробуйте установить порт к объекту соединения в database.js. Как это:

var mysql = require('mysql'); 
var c = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'bjtu', 
    password : 'bjtu', 
    database : 'restaurant', 
    port  : 90 
}); 

// enable error logging for each connection query 
c.on('error', function(err) { 
    console.log(err.code); // example : 'ER_BAD_DB_ERROR' 
}); 

exports.connection = function() { 
    return c; 
}; 

по умолчанию используется порт 3306, который оленья кожа выглядеть ваш случай :)

И я предлагаю вам заглянуть в MySQL бассейны.

+0

Я создал модуль database.js, как показано в EDIT выше, теперь как это использовать для входа? Экспресс-сервер получает доступ к первому .js-файлу выше и не принимает имя пользователя и пароль из базы данных. Js Просто говорит: «Этот сайт не может быть достигнут. Localhost отказался подключиться». Что мне здесь не хватает? Должен ли я связать эти два файла .js в некотором роде? – Bik

+0

Я запустил команду «node database.js» в консоли и не показывал никаких сообщений. Он ждет минут и снова показывает путь к каталогу. Не говорится, что установлено соединение или что-то еще. Пожалуйста помоги! – Bik

+0

Я не вижу эти console.logs в вашем файле database.js. Ваш код близок к работе, я могу предложить установить узел-инспектор и отладить ваше приложение. – Lazyexpert

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