Node isn't like rails in that it tries to give you solutions for the whole stack. So it sounds like you're not looking for node conventions but framework conventions. Honestly there aren't many at the database level. What I've seen is that people have been building up their own database conventions based on their own experience and preferences. Frameworks like geddy have true data models a la rails. But I haven't seen a good system for managing data migrations.
That said, I don't think you want to run your schema validations by default every time the app starts. IMO, data migrations are part of deployment, not runtime. You could check some schema version on startup and fail to start. Then that would let you know that you neglected to run some migration routines with this release. For running tasks, node has jake https://github.com/mde/jake. So once you have your migration routines, you can set them up to run as jake db:migrate and put it in your deploy scripts. I'm not sure if this helps, but that's what I got. You should build a migrations tool and open source it :) :Marco On Tuesday, May 29, 2012 10:40:04 AM UTC-7, deitch wrote: > > When I launch my app in test or dev, it runs a database initializer, > based on config file, that cleans out the db entirely, loads the > properties, loads the seed data. Works fine. > > Looking for a pattern for similar in production. > > a) Is there anything like "rake db:migrate" from Rails for node? > b) What patterns are people using? I am tempted to have the db > initialize split into two functions: initialize(), which runs > automatically in dev/test, which always cleans out and resets the db, > and validate(), which runs automatically in beta/prod and ensures that > the database properties are up to speed with the current version of > the properties description file but does not clean it out. > > e.g. new view "abc" wasn't in the last release, so I build it into my > db properties/schema file. Now every test will create it for local > test db. The moment I deploy (git using heroku, jitsu tools, manually, > whatever), that view will *not* be in my managed database, and I am > stuck. So validate() on launch ties properties to code version (good). > But modifying database every time app starts seems risky. > > Thoughts? > > -- 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
