質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

0回答

985閲覧

MysqlのBookshelfを使った記事投稿について

Tikka123456

総合スコア34

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2020/05/07 08:29

Mysqlの操作こちらのサイトを参考にBookshelfを使って新しい記事を作成する機能を作っていますが、フォームに値を入力しても更新されません。
どうかご享受お願いします。

OS:Windows10
"express": "^4.17.1"
"mysql": "^2.18.1"

index.js

Javascript

1let express = require('express') 2let router = express.Router() 3 4//let connection = require('./router/mysqlconnect') 5var knex = require('knex')({ 6 client: 'mysql', 7 connection: { 8 host : 'localhost', 9 user : 'root', 10 database : 'mydb' 11 } 12}); 13 14var Bookshelf = require('bookshelf')(knex); 15var MyData = Bookshelf.Model.extend({ 16 tableName: 'zatu' 17}); 18 19 20 21router.get('/',(req, res, next) => { 22 23 new MyData() 24 .fetchPage({page: 1, pageSize: 3}) 25 .then((collection) => { 26 var data = { 27 title: 'INDEX', 28 content: collection.toArray(), 29 pagination: collection.pagination 30 }; 31 32 res.render('index.ejs', data); 33 }) 34 .catch((err) => { 35 res.status(500).json({ 36 error: true, 37 data: {message: err.message} 38 }); 39 }); 40}); 41 42 43 44//新規作成 45router.get('/new', (req, res, next) => { 46 47 var data = { 48 title: 'CREATE', 49 content: '新しいレコードを入力:' 50 }; 51 52 res.render('new.ejs', data); 53}); 54 55router.post('/new', (req, res, next) => { 56 57 var response = res; 58 console.log(response); 59 60 new MyData(req.body).save().then((model) => { 61 response.redirect(('/')); 62 }) 63}); 64 65 66 67 68 69 70 71 72router.get('/:page([0-9]+)',(req, res, next) => { 73 74 var pg = req.params.page; 75 pg *= 1; 76 77 new MyData() 78 .fetchPage({page: pg, pageSize: 3}) 79 .then((collection) => { 80 var data = { 81 title: 'INDEX', 82 content: collection.toArray(), 83 pagination: collection.pagination 84 }; 85 86 res.render('index.ejs', data); 87 }) 88 .catch((err) => { 89 res.status(500).json({ 90 error: true, 91 data: {message: err.message} 92 }); 93 }); 94});

index.ejs

HTML

1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="UTF-8"> 6</head> 7 8<body> 9 10 <div class=contanier> 11 <header> 12 13 </header> 14 <hr> 15 <div class="top-detail"> 16 <div class="new-detail"> 17  <h1><%= title %></h1> 18 <br> 19 <article class="message is-small"> 20 <div role="main"> 21 <ul class="table-body"> 22 <% for (var i in content) { %> 23 <li> 24 <% var obj = content[i].attributes; %> 25 <div class="message-header"> 26 <td><%= obj.title %></td> 27 </div> 28 <div class="message-body"> 29 <td><%= obj.content %></td> 30 <span class="create-column"> 31 <td><%= obj.created_at %></td> 32 </span> 33 </li> 34 <% } %> 35 </ul> 36 </div> 37 </div> 38 </artcle> 39 <hr> 40 <div class="new-zatu"> 41 <a href="/new" class="button is-success is-rounded">投稿する</a> 42 </div> 43 44 </div> 45 </div> 46 </div> 47 48</body> 49 50</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

snogot

2020/05/07 13:10

私には Bookshelf.js の知識がないので、的外れだったらすみませんが・・・ 質問文に情報が少なく、状況がわかりづらく思います。 > フォームに値を入力しても更新されません。 これは具体的に、どの画面でどんな操作をしたのでしょうか? もし操作している画面が new.ejs でしたら、そちらに問題のある可能性もありますので コードも質問文へ追記いただけると状況がつかみやすいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問