More Practice # 02
Upload Video
をクリックすると、post requesr
が/video/upload URLに送信されます.そして
videoRouter.js
にroute
を作りました.videoRouter.route("/upload").get(getUpload).post(postUpload);
このセクションでは、post request
について説明します.controller
もあります.controller
ただ一つのことをします.videoController.js
からexport const postUpload = (req, res) => {
// here we will add a video to the videos array.
return res.redirect("/");
};
この部分です.それはそれをホームページにリダイレクトすることです.今はそれしかしていませんが、後で交換してあげます.
upload video
をクリックした瞬間、現在のurlでpost request
を送信します.希望さえあれば、いくらでも変えられる.例えば、
action
post request
の他のサイトに送信することもできます. form(method="POST", action="/videos/upload")
しかし、私はそんなことはしません.videos/..
とget request
は現在所有しているのでurl(/video/upload)で受信するので、
post request
を行う必要はありません.しかし、
action
を使用したい場合は、現在使用しているurlを入力することができます.ただし、これはデフォルト(デフォルト)です.私は気にしないから、置いておきましょう.覚えるためです.
今は
action
を押すだけでホームページに戻ることができます.正確には、サイトは
upload video
ではありません.ウェブサイトを変えただけです.
直接皆さんにページを見せるのではなく
render
で皆さんにcontroller
を見せましたでは、まず
browser
は/ビデオ/アップロードです.redirect
はあなたをそこに送ります.そしてbrowser
はbrowser
にどこかに行くように伝えた.だから
controller
は2つの場所に行きます.1つは
browser
/video/uploadで、もう一つは
browser
がホームページin/に行きます.post request
からget request
を取得するにはどうすればいいですか?input
からexport const postEdit = (req, res) => {
const { id } = req.params;
const { title } = req.body;
videos[id - 1].title = title;
return res.redirect(`/videos/${id}`);
};
data
を使用することにより、videoController.js
においてユーザによって記述されたreq.body
を得ることができる.ユーザは、
input
によって作成されたdata
を得ることができる.今からinput
を作ろうexport const postUpload = (req, res) => {
console.log(req.body);
return res.redirect("/");
};
更新後、data
が新しい名前で作成され、console.log(req.body)
であることが確認されます.がらんとした
upload video
に名前を付けなかったからです.名前を指定します.
console.log
から input(name="title", placeholder="Title", requried, type="text")
その後、もう一度試してみると、input
と命名されたと判断できます.今やるべきことは、新しいビデオを作って、そのビデオをビデオ配列に入れることです.
export const postUpload = (req, res) => {
const { title } = req.body;
const newVideo = {
title,
rating: 0,
comments: 0,
createdAt: "just now",
views: 0,
id: videos.length + 1,
};
videos.push(newVideo);
ビデオ構造は元の構造で再現される.今やっているのは実際の
upload.pug
ではなく、あまり気にする必要はありません.これは正常に動作していることのみを確認する作業です.
const { title } = req.body;
const newVideo = {
title,
このように書くと、JavaScriptはconsole.log
を自分で適用します.database
title
に新しいビデオを入れる機能を備えています.ここで何があったんですか.
videos.push(newVideo);
が/vidoes/upload urlに送信されます.では、
array
のpost request
と呼びます.現在、
postUpload
にはfunction
があるので、input
から名前(title)でデータを受信することができる.その後、newVideoと呼ばれる新しい
name
が作成され、偽のデータです.この
req.body
万は本物のプレイヤーが入力する内容になります.その後、実際には存在しない
object
に新しいビデオが追加される.そして
title
をホームに戻します.database
はホームページに戻り、browser
browser
を呼び出します.そのため、もう1つのビデオを追加すると、
trending
が実行され、controller
が使用されます.trending
(テンプレート)がvideos
に設定されている場合、home
には合計4つのビデオがあります.今更新して確認します.
そうすると、
render
まで作り直すと、新しい動画が追加されます.もちろん、新しいビデオでも名前を変更できます.ただし、これまでサーバが再起動された場合
もちろん新しいビデオはありません.これまでメモリからデータを受信していません
保存するものを持ってくるからです.
Reference
この問題について(More Practice # 02), 我々は、より多くの情報をここで見つけました https://velog.io/@0_cyberlover_0/More-Practice-02テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol