node.jsとORMで普通の掲示板を作ってみた

前回の記事でnode.jsの環境を作ったので、簡単なアプリケーションを作って動かしてみます。

expressを使って割と簡単に作れました。
ORMはgithubを適当に検索してて、良さげな感じがしたsequelizeというのを採用。


サンプルコードは
https://github.com/ryu00026/simple_post_by_node
にあります。(viewやsqlも)


SinatraRailsを使ってた人には見ただけで解るんじゃないでしょうか?
ORMのequelizeの詳しい情報は下記を参照してください。
http://sequelizejs.com/

var express = require('express'), 
    ejs = require('ejs');

var Sequelize = require("sequelize").Sequelize;
var sequelize = new Sequelize('post_development', 'root', '', {
                                  host: "localhost",
                                  port: 3306
});

// models
var Post = sequelize.define('Post', {
                                title: Sequelize.STRING,
                                content: Sequelize.TEXT
                            });



var app = express.createServer();
app.use(express.bodyDecoder());
app.register('.ejs', ejs);

// GET
// 記事一覧表示
app.get('/', function(req, res) {
            Post.findAll(function(posts) {                             
                             var locals = {
                                 posts: null
                             };
                             locals.posts = posts;                              
                             res.render('index.ejs', {
                                            locals: locals
                                        });
                         });
        }
       );


// 記事作成
app.get('/new', function(req,res){
            res.render('new.ejs');
            var post = new Post({
                                })            
        });

// POST
// 記事作成
app.post('/', function(req, res) {
             var post = new Post({
                                     title: req.body.title,
                                     content: req.body.content
                                 });
             post.save(function(){});
             res.redirect("/");
});



app.get('/posts/:id',function(req,res){
            console.log(req.params.id);
            var id = parseInt(req.params.id);
            Post.find(id, function(post) {
                          res.render('show.ejs', {
                                         locals: { 
                                             title: post.title,
                                             content: post.content    
                                         }
                                     });            
                          
                      });

});

app.listen(3000);