Я пытаюсь изучить node.js, чтобы я мог начать работу над моим личным проектом. Я пытаюсь следовать примерам в книге «Learning node.js» (автор Marc Wandschneider). В этот момент я решил отказаться от практики своего примера и сразу же использовать свой код в качестве основы для своего кода практики.Подключение к базе данных RDS из node.js
В моем практическом коде все, что я пытаюсь сделать, это подключиться к моей базе данных RDS (нет, я не использую Elastic Beanstalk, btw) и выводить содержимое одной из таблиц. Кажется, достаточно просто, но когда я взламываю код для него (на основе книги), он, кажется, пытается подключиться, но зависеть от этого процесса. Это мой код:
var pool = require('generic-pool');
var async = require('async');
var mysql = require('mysql');
var host = "<database-name>.cu8hvhstcity.us-west-2.rds.amazonaws.com",
database = "<database-name>",
user = "<username>",
password = "<someLongPassword>";
var dbClient;
async.waterfall([
// 1. establish connection to database
function (callback) {
console.log("Connecting to database " + database + "...");
dbClient = mysql.createConnection({
host: host,
database: database,
user: user,
password: password,
port: 3306
});
dbClient.connect();
},
// 2. select all from a table (let's go for locations)
function (cb)
{
var query = "SELECT * FROM locations"
console.log("running query \"" + query + "\"...");
dbClient.query(query, cb);
},
function (rows, fields, callback)
{
console.log(fields);
for (var i = 0; i < rows.length; i++)
{
console.log(JSON.stringify(rows, null, '\t'));
}
}
], function (err, results) {
if (err)
{
console.log("An error occurred...");
console.log(err);
}
else
{
console.log("Everything successfully completed!");
}
dbClient.end();
})
Это лучше, чем с первой попытки, когда я ставлю database
члена в аргумент, переданный mysql.createConnection()
, и он жаловался, что база данных была неизвестна. В любом случае ни «Ошибка произошла ...», ни «Все успешно завершено!» вывод в окно.
Есть ли какие-либо асинхронные вещи, которые приводят к какой-то бесконечной бесконечной петле или чему-то еще? Как это исправить?
Книга имеет ассоциированное GitHub page
ПРИМЕЧАНИЕ:
Ни мой пример, ни процитированный код GitHub пользоваться этой pool
переменного, поэтому его можно просто закомментировать. Все, что вам нужно сделать, чтобы запустить это самостоятельно, - это указать npm install async
, npm install mysql
(а также создать фиктивную базу данных RDS, которая должна указывать на таблицу locations
), прежде чем копировать, вставлять и запускать этот код.
EDIT:
Я исправил проблему с database
. Я понял, что имя базы данных используется «_», а не «-». Тот же вопрос (код зависания) все еще сохраняется ...