🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

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

Node.js

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

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

Q&A

1回答

916閲覧

データベースにフォームと同じ値が存在していないか調べ、なければ保存したい

jsrookie

総合スコア24

MySQL

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

Node.js

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

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

0グッド

0クリップ

投稿2019/10/09 10:30

発生している問題、目指している形

フォームの値をデータベースに保存するようにしているのですが、その際にフォームの値がデータベースのカラムval内に既に存在しているか調べ、存在していない場合に保存できるようにしたいです。

hello.jsのADDの部分でクエリー文の前に検索に関するコードを入れればよいのではと考えているのですが、私が勉強した本の中では検索は
new MyData().where("val","=",req.body.val).fetch().then((collenction) => {})
を使用する方法しか書かれていませんでした。
これだと値が存在している場合でしか利用できないと思います。
存在していないときに保存したい場合はどうすればよいでしょうか?
調べても分かりませんでした。

Node.js + Express + MySQL で行っています。

ご教授よろしくお願い致します。

該当のソースコード

↓routes\hello.js

var express = require('express'); var router = express.Router(); var mysql = require("mysql"); var knex = require("knex")({ dialect: "mysql", connection: { host : "localhost", user : "root", password : "", database : "db", charset : "utf8" } }); var Bookshelf = require("bookshelf")(knex); var MyData = Bookshelf.Model.extend({ tableName: "mydata" }); //MySQLの設定情報 var mysql_setting = { host : "localhost", user : "root", password : "", database : "db" }; //ADD router.post('/add', (req, res, next) => { var vl = req.body.val; var data = {"val":vl}; var connection = mysql.createConnection(mysql_setting); connection.connect(); connection.query("insert into mydata set ?", data, function (error, results, fields) { res.redirect("/hello"); }); connection.end(); }); module.exports = router;

↓views\hello\add.ejs

<!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="/stylesheets/style.css" /> <script src="https://code.jquery.com/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script> </head> <body> <div role="main"> <form method="post" action="/hello/add" name="test"> <table> <tr> <td><textarea type="text" name="val" rows="10" cols="60"></textarea></td> </tr> <tr> <th></th> <td><input type="submit" value="作成"></td> </tr> </table> </form> </div> </body> </html>

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

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

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

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

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

guest

回答1

0

MySQLではINSERT IGNOREという構文で存在しない場合のみINSERTという操作ができるようです。
参考

投稿2019/10/10 01:57

ryo_y

総合スコア244

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

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

jsrookie

2019/10/14 11:33

返事が遅くなってしまい申し訳ございません。 回答ありがとうございます。 参考では、INSERT IGNORE INTO users (userid,username) VALUES (2,'swan'),(4,'bear') ; のように(2,'swan')のような具体的な値を入力していますが、私はフォームの値を入力したいのでreq.body.valとしたのですがこれだと値を保存できなかったです。 そのため、現在は重複チェックしたいカラムをユニークにしています。 (2,'swan')の部分は変数は入れられないのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問