発生している問題、目指している形
フォームの値をデータベースに保存するようにしているのですが、その際にフォームの値がデータベースのカラム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>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/14 11:33