Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9311

Express + sequelize でCRUDアプリを作る

$
0
0
前回の記事の続きです こちらの記事を元にCRUDアプリを作っていきます。 ejsをインストール これでejsファイルが使えるようになりました。 $ npm install ejs --save ディレクトリ直下のapp.jsを修正 以下のようにしてください。コピペで大丈夫です。 app.js var createError = require('http-errors'); var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var logger = require('morgan'); let db = require("./models/"); var app = express(); // view engine setup app.set('views', './views'); app.set('view engine', 'ejs'); app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); // app.use('/', indexRouter); app.get('/', (req, res, next) => { db.user.findAll({}).then((users) => { res.render('index.ejs', {users: users}); }); }); //新規作成画面のルーティング app.get('/new', (req, res) => { res.render('new.ejs'); }); //新規作成アクション app.post('/create', (req, res) => { db.user.create({ firstName: req.body.firstName, lastName: req.body.lastName, email: req.body.email, createdAt: new Date(), updatedAt: new Date() }); res.redirect('/') }); //編集画面へのルーティング app.get('/edit/:id', (req, res, next)=> { db.user.findByPk(req.params.id).then(user => { res.render('edit.ejs', {user: user}); }); }); //更新アクション app.post('/update/:id', (req, res) => { db.user.findByPk(req.params.id).then(user => { user.id = req.params.id, user.firstName = req.body.firstName, user.lastName = req.body.lastName, user.email = req.body.email, user.createdAt = new Date(), user.updatedAt = new Date() user.save(); res.redirect('/'); }); }); //削除 app.post('/delete/:id', (req, res) => { db.user.findByPk(req.params.id).then(user => { user.destroy(); res.redirect('/'); }); }); // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app; ディレクトリ構造を確認&追加 こんな感じでviewsディレクトリ直下にindex.ejs、edit.ejs、new.ejsを新規作成してください。 . │ ├views │ ├── index.ejs │ ├── edit.ejs │ └── new.ejs │ └── app.js index.ejsの中身 views/index.ejs <% users.forEach((user) => { %> <li> <div> <span><%= user.firstName %></span> <span><%= user.lastName %></span> <span><%= user.email %></span> <a href="/edit/<%= user.id %>">詳細</a> <form action="/delete/<%= user.id %>" method="post"> <input type="submit" value="削除"> </form> </div> </li> <% }) %> new.ejsの中身 view/new.ejs <form action="/create" method="post"> <input type="text" placeholder="名前" name="firstName"> <input type="text" placeholder="苗字" name="lastName"> <input type="text" placeholder="e-mail" name="email"> <input type="submit" value="登録する"> </form> edit.ejsの中身 views/edit.ejs <form action="/update/<%= user.id %>" method="post"> <input type="text" placeholder=<%= user.firstName %> name="firstName"> <input type="text" placeholder=<%= user.lastName %> name="lastName"> <input type="text" placeholder=<%= user.email %> name="email"> <input type="submit" value="更新する"> </form> まとめ app.jsでルーティングを受け取り、各種アクションを行っています。 途中で出てくるfindAll()やcreate()、findByPkなどは、sequelizeに由来するものです。

Viewing all articles
Browse latest Browse all 9311

Trending Articles