投稿
送信ボタンを押したら入力された文字を保存できるようにしていこう。
POSTで送られてきたデータを取得する
index.htmlのformのactionにmsgとしとく。
<form action="msg" method="POST">
app.jsは
app.post('/nodebbs/msg', (req, res) => {
})
で取得できる。
Express 4.x - API リファレンス
req.bodyの中に入ってるそう。
Express 4.x - API リファレンス
扱うために以下2行追加
app.use(express.json()) app.use(express.urlencoded({ extended: true }))
Express 4.x - API リファレンス
Express 4.x - API リファレンス
そんでapp.postの中身を
console.log(req.body)
フォームからなんか入力して送信するとコンソールに表示された!
データをファイルに保存
ファイル形式何にしようかなと思ったんですが、JSONでいーかなと思った。なのでlog.jsonという空のファイルを作っておく。
Node.jsにははじめからfsモジュールというファイル入出力用のモジュールが組み込まれているそうなのでそれを使う。
const fs = require('fs');
File system | Node.js v22.7.0 Documentation
うーーーんと、取得したデータを一旦オブジェクトにして、JSON形式で書き出して、サーバーローカルのファイルに追記するみたいな感じでどうだろう。
var obj = { name: req.body['user_name'], msg: req.body['user_message'], dt: (new Date()).toJSON() }
こんな。名前と内容と今の時間。これでオブジェクトができた。これをJSON文字列に変換する。
var str = ',' + JSON.stringify(obj)
このままだと”,”が足りないので前につけとく。そしたらファイルに追記
fs.appendFileSync('log.json',str,'utf8')
書き込めた!で、なんかイキっぱなしになってしまうので、最後に
res.redirect('/nodebbs')
とリダイレクトした。あとは読み込みかなー?
参考
Date.prototype.toJSON() - JavaScript | MDN
toJSON() メソッドは、Date オブジェクトの文字列表現を返します。
JSON の操作 - ウェブ開発を学ぶ | MDN
JavaScript Object Notation (JSON) は、構造化データを表現するための標準のテキストベースの形式で、 JavaScript のオブジェクト構文に基づいています。ウェブアプリケーションでデータを転送する場合によく...
コメント