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

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

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

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

Node.js

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

jade

Jade(ジェイド)は、Hamlに影響を受けて開発されたJST(JavaScript Templates)のひとつです。Node.jsで動かすことができます。

Q&A

1回答

3048閲覧

sequelize、jade、expressを使った、mysqlへのデータをinsert

yusuke_00

総合スコア20

MySQL

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

Node.js

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

jade

Jade(ジェイド)は、Hamlに影響を受けて開発されたJST(JavaScript Templates)のひとつです。Node.jsで動かすことができます。

0グッド

0クリップ

投稿2016/07/31 05:15

###前提・実現したいこと
sequelize,jade,expree等を使い、簡単なCRUDを作っています。
mysqlへデータを追加したい。
findAllで、一覧取得をjadeで表示することが出来た。

###car.js

'use strict'; var path = require('path'); var express = require('express'); var router = express.Router(); var Sequelize = require('sequelize'); var sequelize = new Sequelize('lemonlot','lemonlot','Noric0711'); var Cars = sequelize['import'](path.join('../models/cars')); router.get('/', function(req, res, next){ Cars.findAll().then(function(cars){ res.render('cars',{ cars:cars }); }); }); // UPDATE router.put('/:id',function(req,res,next){ let id = req.params.id; Cars.findOne({ where:{ id: id }, }).then(function(car) { if (!car) { next(); return; } res.render('car_put',{ car: car }); }); }); // insert router.post("/car_create", function(req, res){ var post = { id: req.body.id, nameId: req.body.nameId, makerId: req.body.makerId, bodyTypeId: req.body.bodyTypeId, registrationDate: req.body.registrationDate, price:req.body.price, areaId:req.body.areaId, mileage:req.body.mileage, dealerId: req.body.dealerId }; sequelize.query('INSERT INTO lemonlot VALUES ?', post, function(error){ if (error) { console.log(error.message); } else { console.log('success'); } }); }); // delete router.delete('/',function(req,res,next){ res.send('DELETEしちゃうぜ!!!!!!!!'); }); module.exports = router;

###cars.jade

include header extends layout block content +header(3) p Welcome to Cars ul.cars each car,index in cars li=car.id+ ":" + car.nameId +":"+ car.makerId +":"+ car.bodyTypeId +":"+ car.registrationDate +":"+ car.price +":" +car.areaId +":"+ car.mileage +":"+car.dealerId+":"+ car.createdAt +":"+ car.updatedAt //- edit form(action='/cars/#{index +1}' method='post') input(type='hidden' name="_method" value="put") div input(type='submit' value='edit') //- delete form(action='/cars' method='post') input(type='hidden' name="_method" value="delete") div input(type='submit' value='delete') //- test form(action='/cars/#{index +1}' method='get') input(type='submit' value='get') div //- post form(action='/cars/car_create' method='post') input(type='submit' value='insert') //- //- form(action='cars/delete' method='delete') //- input(type='submit' value='delete')

###car_create.jade

include header extends layout block content +header(3) p Welcome to CAR_CREATE form(action='/cars/car_create' method='post') div div.name id input(type='text' name='id' id='id' style='display: block;') div div.name nameId input(type='text' name='nameId' id='nameId' style='display: block;') div div.name makerId input(type='text' name='makerId' id='makerId' style='display: block;') div div.name bodyTypeId input(type='text' name='bodyTypeId' id='bodyTypeId' style='display: block;') div div.name registrationDate input(type='text' name='registrationDate' id='registrationDate' style='display: block;') div div.name price input(type='text' name='price' id='price' style='display: block;') div div.name areaId input(type='text' name='areaId' id='areaId' style='display: block;') div div.name mileage input(type='text' name='mileage' id='mileage' style='display: block;') div div.name dealerId input(type='text' name='dealerId' id='dealerId' style='display: block;') div input(type='submit' value='edit' style='display: block;')

###前提・実現したいこと
jade側で、submitを設定し、指定のurlに飛び、car.jsでpostとして受け取り、、という感じです。そこで、エラーを吐きました。

method overrideという、ものを使っているため、jadeのformのところは少し特殊です。

###発生している問題・エラーメッセージ

Sequelize.query was refactored to only use the parameters `sql` and `options`. Please read the changelog about BC. Error: Sequelize.query was refactored to only use the parameters `sql` and `options`. Please read the changelog about BC. at Sequelize.query (/Users/yusuke/develop/lemonlot/node_modules/sequelize/lib/sequelize.js:737:11) at /Users/yusuke/develop/lemonlot/routes/cars.js:49:15 at Layer.handle [as handle_request] (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/layer.js:95:5) at next (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/route.js:131:13) at Route.dispatch (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/layer.js:95:5) at /Users/yusuke/develop/lemonlot/node_modules/express/lib/router/index.js:277:22 at Function.process_params (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/index.js:330:12) at next (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/index.js:271:10) at Function.handle (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/index.js:176:3) at router (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/index.js:46:12) at Layer.handle [as handle_request] (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/index.js:312:13) at /Users/yusuke/develop/lemonlot/node_modules/express/lib/router/index.js:280:7 at Function.process_params (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/index.js:330:12) at next (/Users/yusuke/develop/lemonlot/node_modules/express/lib/router/index.js:271:10)

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

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

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

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

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

guest

回答1

0

Sequelize は使ったことがないので、エラーメッセージをググっただけですが・・・。
Sequelize 3.0.0 では、Sequelize.query は2個のパラメータ(sql と options)を受け取る仕様のようですね。
最新の API Reference を確認されてください。
Promise が返されるので、.spread() または .then() で後続処理を定義するようです。

エラーメッセージは当然調べていて、それでわからないということでしたら、すみません。詳しい人の回答をお待ちください。


Sequelize.query was refactored to only use the parameters 'sql' and 'options'.
Please read the changelog about BC.

Sequelize.query はパラメータ 'sql' と 'option' だけを使うようにリファクタリングされました。
BC については changelog を読んでください。
(註: BC = backward compatibility - 後方互換性)

changelog は ここ にあります。

投稿2016/07/31 08:57

q1701

総合スコア274

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

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

yusuke_00

2016/07/31 14:49

なるほど。参考にさせていただきます。 レスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問