Thanks for your helpful responses. Inspite of my "fundamental 
misunderstanding of how async code works" I was able to use my brain really 
hard to get it to work. And I didn't even need to read the node beginner 
book for a third time to do it! But I do love the section in there about 
databases and postgresql ;) 

Anyway, the problem was that I was attempting to update the table without a 
connection being active. I tried to prematurely abstract out the 
functionality, when, as a beginner, I should have been sticking it all 
together just to see how it works. This is what I ended up with after 
deleting the db.js file and putting everything in one function in index.js. 
Before it was releasing the user back to the pool immediately without doing 
anything. Here I stuck my insert query into the callback of the main query 
function. I don't know if this is the best way to do it, but it works and I 
think that it'll leave the async fairy tickled silly. The server is not 
exiting and the data is populating the table on the backend. Success! 
Please tell me if you have any other insights or tips. 

function addNewPost(request, response) {
>   var postsHTML = fs.readFileSync('views/post/posts.html');
>   response.writeHead(200, {
>     'content-type': 'text/html; charset=utf-8'
>   });
>   parseBody(request, function(body) {
>     pg.connect(conString, function(err, client, done) {
>       if(err) {
>         return console.error('error fetching client from pool', err);
>       }
>       client.query('CREATE TABLE IF NOT EXISTS subscriber (name 
> varchar(64), email varchar(64))', function(err, result) {
>         client.query("INSERT INTO subscriber (name, email) values($1, 
> $2)", [body.name, body.email]);
>         done();
>         if(err) {
>           return console.error('error running query', err);
>         }
>         console.log(result.rows);
>       });
>     });
>   });
>   response.end(postsHTML);
> }


K


On Tuesday, September 23, 2014 2:47:44 PM UTC-5, Matt Sergeant wrote:
>
> You're just fundamentally misunderstanding how async code works (a common 
> problem with people new to Node). You're coding as if things are 
> synchronous.
>
> You need to do some of the basic ground work first to understand this. Try 
> http://nodebeginner.org/
>
> On Tue, Sep 23, 2014 at 2:16 PM, kurofune <[email protected] 
> <javascript:>> wrote:
>
>> Hi there, 
>>
>> I am doing my first node project and want to save subscriber input info 
>> to a postgres db, and I think I almost have it working. It successfully 
>> made the table when I tested it in my browser, but instead of saving the 
>> data, like it should, it is ignoring the data altogether and killing my 
>> server. I am doing this project to understand the internals and how all the 
>> moving parts work together, so I would appreciate any insights you guys 
>> would be willing to share.  
>>
>> I have this code in my db.js file:
>>
>> exports.subscribe = function (name, email) {
>>>   connectUser();
>>>   client.query("INSERT INTO subscriber (name, email) values($1, $2)", 
>>> [name, email]);
>>> }
>>>  
>>
>> exports.connectUser = pg.connect(conString, function(err, client, done) {
>>>
>>   if(err) {
>>>     return console.error('error fetching client from pool', err);
>>>   }
>>>   client.query('CREATE TABLE IF NOT EXISTS subscriber (name varchar(64), 
>>> email varchar(64))', function(err, result) {
>>>     done();
>>>     if(err) {
>>>       return console.error('error running query', err);
>>>     }
>>>     console.log(result.rows);
>>>   });
>>> });
>>
>>
>>  and it is getting called here in my index.db file:
>>
>> function addNewPost(request, response) {
>>>   var postsHTML = fs.readFileSync('views/post/posts.html');
>>>   response.writeHead(200, {
>>>     'content-type': 'text/html; charset=utf-8'
>>>   });
>>>   parseBody(request, function(body) {
>>>     db.connectUser();
>>>     db.subscribe(body.name, body.email);
>>>   });
>>>   response.end(postsHTML);
>>> }
>>
>>
>> My server works fine when I comment out those two db statements. The app 
>> is running on localhost:3000 and the db on localhost:5432. Please ask me if 
>> I am not providing enough information. Thanks in advance!
>>
>> K 
>>
>> -- 
>> Job board: http://jobs.nodejs.org/
>> New group rules: 
>> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
>> Old group rules: 
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "nodejs" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/nodejs/64430273-9418-4098-8bf2-a72bae248184%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/nodejs/64430273-9418-4098-8bf2-a72bae248184%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/b22e7431-b678-4823-8980-3535d5aa1151%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to