very right.

but there is another option: at the very end of the day you have to decide, 
works this out for oyu or not? node.js is not the only thing which is doing 
async io. it's not the only thing which supports js code. so if you don't 
like it, go on and find your luck somewhere else ;) 

good luck 

Am Samstag, 2. Februar 2013 09:24:07 UTC+1 schrieb Stephen Bartell:
>
>
>
> On Friday, February 1, 2013 8:10:35 AM UTC-8, Thomas Gray wrote:
>>
>> Hi guys
>>
>> Let me start out here with a disclaimer. I am a newbie to programming in 
>> Javascript. It's syntax is acceptable, so I have no problem with that - 
>> it's just on the structuring of Javascript especially within the Async 
>> context of nodeJS.
>>
>> I am at the moment trying to write a really simple RESTful API in NodeJS 
>> using Mongo as a data source. I'm using express to handle the HTTP 
>> component and the MongoDB library (via NPM) to handle my interaction with 
>> Mongo. I am having some real troubles with how to properly structure my 
>> application. You can view it as it stands here: http://pastie.org/6013517
>>
>> As you will see, I am calling the user collection, then finding a user, 
>> then creating a new login token, then updating the user with that login 
>> token, then sending that login token back to the browser. All within one 
>> crazy nested method. I've been programming in non-async languages for a 
>> while, and I guess I am failing to understand the concept of how to program 
>> asynchronously. The best I can come up with is to have a User object that 
>> just has methods that are called within the callback of each component.
>>
>> Looking at the code I have given above - how would I better structure 
>> this to remove the levels of nesting, but still not have it as a procedural 
>> object (ie. one method calls the next which calls the next and so on).
>>
>> Maybe i'm just not understanding how to program in this environment?
>>
>
> I think you're totally getting it.  JS is callback driven.  You just need 
> to find a method of organizing the code that makes most sense to you. 
>  Maybe you'll adopt one of the libs that are proposed in this post, maybe 
> you'll use events, maybe you'll make your own lib.  Maybe you wont give a 
> damn and just use nested callbacks.
>
> Theres no perfect style to all of this. And to be honest, if what you have 
> gets the job done and makes the client happy, then you have a win. 
>
> Personally, I think that struggling through all this async shit on your 
> own without using  helper library is the only way you're going to grok 
> whats really going on beneath the covers.  Once you really get comfortable 
> with how it works, then you can give into being lazy (in a non-insulting 
> sense) and just use a lib, or write your own.
>
> I believe in learning by immersion. Read code, lots of code.  Especially 
> the parts where objects are initiallizing themselves. Off the top of my 
> head, look at node_redis and follow. There are so many others too.  I 
> usually dig through the package.json dependencies and learn how those work. 
>  It a never ending rabbit hole of code to learn from.
>
> One thing i did notice in your pastie is that you're requiring crypto 
> every time you call hashpassword.  Just call it once at the top of your 
> file.
>
> good luck grasshopper ;)
>  
>
>>
>> Tom
>>
>>
>>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
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 post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
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 nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to