2016-07-19 2 views
0

Я пытаюсь изучить 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. Я понял, что имя базы данных используется «_», а не «-». Тот же вопрос (код зависания) все еще сохраняется ...

ответ

1

я сделал следующее:

Во второй функции в массиве, мне нужно два параметра, а не один. I фиксировано таким образом: function(results, cb) Третья функция просто необходима callback(null)

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