This guide really shows what I think is a big problem with a lot of Node guides, they don't go beyond the first 5 minutes.
There are a ton of guides on how to set up a webserver in 20 lines, but hardly any on how to (properly) handle a lot of async callbacks and requests etc.
It's hard to cover many aspects of it when we talked about getting our feet wet. I try to include as few terms as possible that potentially confused people to start coding Nodejs-MongoDB. It's probably a big problem when you try to get your feet wet on the first day you learn about swimming just by jumping all over the pool. But then, hopefully, we learn.
I'm not sure that both Node.js and MongoDB appeal beginners.
These 2 tools are reserved for people who exactly know what they want out of their tools, not for someone who just jumped in to "web development" and wanted to use buzzword compliant tools.
Sorry for being such a snippy on Monday morning but I'm hoping people around me would become better at fundamental as opposed to combining tools w/o knowing what they're good for.
... and this is a good thing? as opposed to learn proper RDBMS first and learn the lingo of NoSQL (document vs key-value vs column-oriented)?
But I digress, people have different experience. I've seen projects got burned many times by beginners who have lacked of understanding of RDBMS and you may have entirely different experience where your project shines because of MongoDB.
Going into how to handle a lot of async callbacks/requests would be entirely different subject matter, would it not? The blog post is titled "Nodejs and MongoDB, A Beginner’s Approach" and that's the subject matter it tackles.
Agree with this. Was disappointed the guide didn't delve into asynchronous even at a basic level. This is what makes nodejs and mongodb worth using and I don't think the concepts are overly difficult to grasp.
To be honest, a good attempt by the author but I wouldn't recommend this to a beginner. Why? I don't recommend the use of the native driver - you end up with needlessly complex code.
I don't want to criticize the authors work. He's done a pretty good and thorough job. Hopefully I'll pen down an easier guide later tonight.
Yeah, I'd say many folks will probably end up wanting to use something like Mongoose to abstract the nitty-gritty details of Node/MongoDB interaction, but knowing how to use the underlying library (and node-mongodb-native is the most popular of them by far) is healthy for beginners.
Actually it's more like: hey, let's take two tools that ought to be used with utmost caution by people who know what they're doing and why they need them, and present them as the best thing since sliced bread.
The huge majority of uses for either would be better served without them.
What elitist attitude? Agree, we all have to start somewhere, and the basics --a relational DB and a synchronous framework are fine somewheres to start from.
Now, when (and if) you know enough about those, by all means move on to NoSQL etc.
Note, though, that I'm taking about people using it in production and not knowing what the compromises are --the "Mongo DB is webscale" and "node.js is damn fast" people.
I have no problem with people that are just using it to play/experiment with (though, they too would have to understand the compromises eventually).
Mongo is excellent but I'd argue that Node and CouchDB is even a better fit because there's not even a driver involved, it's one HTTP request which just calls another.
On a related note, I'm working on a synchronous narwhal-mongodb compatible driver that would work with common-node (http://olegp.github.com/common-node/), Would anyone be interested in helping out?
I'm both Node and MongoDB user and like them, but this can get really messy when there's a chain of callbacks involved, eg when you need a sequence of results but want to do it in a asynchronous fashion.
While I wouldn't quite call it pretty, it keeps things at the same indentation level, and I can still use closures to maintain the illusion of a single "thread".
It's a problem with writing asynchronous code when you have lots of consecutive requests. I don't know if node has something like this but the Tornado team have written http://www.tornadoweb.org/documentation/gen.html which can make such things a little easier
It's generally true for Node when you have a lot of chained I/O. You can somewhat avoid it using events (so you set up event listeners instead of just chaining callbacks endlessly). So far I haven't seen any MongoDB module for Node taking advantage of those (haven't looked a lot yet, though).
I've used EventEmitter on a couple toy projects, but I've always assumed that's adding a bit more overhead to everything than just using callbacks. It's easier to read though and probably easier for someone else to figure out in the future. I've played with node.js libraries that have callbacks strung out over several files, so tracking down exactly where some behavior is happening isn't easy.
There are a few examples out there about using events/listeners, but I think there's room for a really good one.
Using event instead of callback to sequentially get the results with asynchronous way it's a potentially good idea. I also haven't learn much about another Nodejs-MongoDB libraries except the one what I have mentioned there. Please share if you have a follow-up on this technique.
There are a ton of guides on how to set up a webserver in 20 lines, but hardly any on how to (properly) handle a lot of async callbacks and requests etc.