簡易掲示板を作りたい、node.js+expressで ③/nodebbs/msgで投稿する

スポンサーリンク
スポンサーリンク

投稿

送信ボタンを押したら入力された文字を保存できるようにしていこう。

スポンサーリンク

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 v19.5.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 のオブジェクト構文に基づいています。ウェブアプリケーションでデータを転送する場合によく使われます(例えば、複数のデータをサーバーからクライアントへ送信して、ウェブペー...

コメント

タイトルとURLをコピーしました