クローンオイルパイプ#6 CRUD(1)CREATE&READ
🔖 カリキュラム:6.15~19
Preview
この過程で、文字列(「spliter」)、map()の分割方法を学習した. 参考までに、新しいデータはdbに保存されていません. コンソールには追加されていないIDが表示され、newモデルを使用して新しいデータを生成する場合はMongusによって提供されます. 入力されたデータ型が正しくない場合(ex.title:String、title:6に設定)、モデルに基づいてタイプが調整されます. タイプが変更できない場合(ex.views:Number Injectviews:lalaに設定)は、このセクションを削除してデータを作成します. データ型以外の属性を追加する場合は、このようにします.
ex. { type: String, required: true, default: Date.now } defaultプロパティ設定の場合、このプロパティに関数がある場合は()を削除する必要があります.Date.now() (x) Date.now (o) defaultプロパティ設定は、コントローラで説明する必要はありません.デフォルト値が自動的に生成されるためです. 公式サイトのmongose.Schemaに適用できる様々な属性について説明します.
1)
作成時にnewモデルの代わりにモデルを使用します.create()を書くと.save()機能を含む方法なので.別途save()を書く必要はありません.
try/catch構文を使用してエラーをキャプチャし、エラーメッセージが表示されたときにビューに表示します.
postUploadプロセスが完了したら、最後にres.redirect("/")を設定し、フォームで情報転送が完了したらホームページに戻ります.また、ホームページでは、home templateがdbからデータをロードして表示することができます.ホームページに行ってみてください.データがよくロードされていることを確認することができます.
ロードしたデータヘッダーをクリックし、watch templateを解放し、データの詳細を読み込むように設定します.
6)存在しないビデオ要求に従ってスクリーンを作成する
if条件文を使用して404テンプレートを解放します(作成).追加学習?
データベース内のデータの作成(作成)を試みる:Schema()設定、モデル()、モデル.create()またはnew Model()、callback&promise、try/catch また、データベース内のデータ:Modelを検索および読み込みしようとしました.find(), Model.findById()は、 を承諾しなければならない.
Preview
前回の授業ではdbのインストール、接続、データフォーマットも設定しました.本当にdbとコミュニケーションするcrud機能をインストールする必要があります.
ビデオをアップロードするページを作成すると、CRUDの設定方法について説明します.
では、それぞれの機能を分けて、まずはC(create)機能から始めましょう.
次に,R(read)機能により生成されたデータがうまくロードされているかを調べる.
ビデオをアップロードするページを作成し、データベースに新しいデータを作成して取得します.
レッスン内容
step 0. アップロードページを作成します。
1) upload template
2)コントローラ上のgetUpload、PostUpload
3)ルータ上でビデオ/アップロードルーティングを行い,それぞれget,post機能を追加する.
step 1. template手動ビュー:inputname
ビデオモデルで作成したフォーマットに従って、フォームはデータの到来を期待します.
upload form付きuploadテンプレートに戻り、inputnameにデータ型で作成したキー値を書きます.
step 2. Controllerジェスチャー:new Model,Model。create
コントローラに戻って、クララからの情報をどのように処理するかを見てみましょう.
1)new Model:データ型に合わせてコントローラに新しいデータを作成します。
//view
const videoSchema = new mongoose.Schema({
title: String,
description: String,
createdAt: Date,
hashtags: [String],
meta: {
views: Number,
rating: Number,
},
});
//controller
export const postUpload = (req, res) => {
const { title, description, hashtags } = req.body;
const video = new Video ({
title,
description,
createdAt: Date.now(),
hashtags: hashtags.split(",").map(word => `#${word}`),
meta: {
views: 0,
rating: 0,
}
});
return res.redirect(`/videos/${id}`);
}
step 0. アップロードページを作成します。
1) upload template
2)コントローラ上のgetUpload、PostUpload
3)ルータ上でビデオ/アップロードルーティングを行い,それぞれget,post機能を追加する.
step 1. template手動ビュー:inputname
ビデオモデルで作成したフォーマットに従って、フォームはデータの到来を期待します.
upload form付きuploadテンプレートに戻り、inputnameにデータ型で作成したキー値を書きます.
step 2. Controllerジェスチャー:new Model,Model。create
コントローラに戻って、クララからの情報をどのように処理するかを見てみましょう.
1)new Model:データ型に合わせてコントローラに新しいデータを作成します。
//view
const videoSchema = new mongoose.Schema({
title: String,
description: String,
createdAt: Date,
hashtags: [String],
meta: {
views: Number,
rating: Number,
},
});
//controller
export const postUpload = (req, res) => {
const { title, description, hashtags } = req.body;
const video = new Video ({
title,
description,
createdAt: Date.now(),
hashtags: hashtags.split(",").map(word => `#${word}`),
meta: {
views: 0,
rating: 0,
}
});
return res.redirect(`/videos/${id}`);
}
ex. { type: String, required: true, default: Date.now }
2) .save():作成したデータをデータベースに保存します。
1)
await 생성된데이터변수명.save()
🌟 ! 注意:忘れないでください.デベに対処するときは歩くのを待つ.3) Model.create():別のオプション
作成時にnewモデルの代わりにモデルを使用します.create()を書くと.save()機能を含む方法なので.別途save()を書く必要はありません.
export const postUpload = async (req, res) => {
const { title, description, hashtags } = req.body;
const video = new Video ({
title,
description,
createdAt: Date.now(),
hashtags: hashtags.split(",").map(word => `#${word}`),
meta: {
views: 0,
rating: 0,
}
});
await 생성된데이터변수명.save()
return res.redirect(`/videos/${id}`);
}
わあ.export const postUpload = async (req, res) => {
const { title, description, hashtags } = req.body;
await Video.create ({
title,
description,
createdAt: Date.now(),
hashtags: hashtags.split(",").map(word => `#${word}`),
meta: {
views: 0,
rating: 0,
}
});
return res.redirect(`/videos/${id}`);
}
銀のようです.4)try/catch:error時にエラーメッセージウィンドウを作成する
try/catch構文を使用してエラーをキャプチャし、エラーメッセージが表示されたときにビューに表示します.
//controller
export const postUpload = async (req, res) => {
const { title, description, hashtags } = req.body;
try {
const video = new Video ({
title,
description,
hashtags: hashtags.split(",").map(word => `#${word}`),
});
await video.save();
return res.redirect(`/`);
} catch (error) {
console.log(error);
return res.render("upload", {pageTitle: "Upload Video", errorMessage: error._message});
}
}
// upload template
extends base
include mixins/videoMixin
block contents
h1 Welcome to Wetube!
a(href="/videos/upload") Upload Videos →
each video in videos
+videoMixin(video)
else
li Sorry nothing found.
5) Read part
5-1. read Home
postUploadプロセスが完了したら、最後にres.redirect("/")を設定し、フォームで情報転送が完了したらホームページに戻ります.また、ホームページでは、home templateがdbからデータをロードして表示することができます.ホームページに行ってみてください.データがよくロードされていることを確認することができます.
// videoController / home
export const home = async (req, res) => {
try {
const videos = await Video.find({});
return res.render("home", { pageTitle: "Home", videos })
} catch(error) {
console.log("server error", error)
}
}
5-2. read Watch
ロードしたデータヘッダーをクリックし、watch templateを解放し、データの詳細を読み込むように設定します.
//video router
videoRouter.get("/:id([0-9a-f]{24})", watch);
! 0から9、aからfは文字と数字の配列で、24文字列です.//video controller
export const watch = async (req, res) => {
const { id } = req.params;
const video = await Video.findById(id);
return res.render("watch", { pageTitle: video.title, video });
}
! Video.またfindById(id)というモンゴル語のスキルを学びました.//watch template
block contents
div
p=video.description
small=video.createdAt
a(href=`${video.id}/edit`) Edit Video →
このようにして生成されたデータがロードされているかどうかもよく確認できる.6)存在しないビデオ要求に従ってスクリーンを作成する
if条件文を使用して404テンプレートを解放します(作成).
export const watch = async (req, res) => {
const { id } = req.params; // const id = req.params.id; 의 es6 버전.
const video = await Video.findById(id);
if (!video) {
return res.render("404", { pageTitle : "404, Not Found"});
}
return res.render("watch", { pageTitle: video.title, video });
}
追加学習?
req.body:
The req. body objectでは、クライアント=>クライアントからStringまたはJSON objectのデータにアクセスできます.つまり、要求(req)のデータをWebページのフォームから表示できます.これには、inputの小さな値(キーがinputname)、リクエストされたサイトのparamsなどが含まれます.
mongoose.モデルでのデフォルトの設定
dbにdbs->マイdb->collection->マイデータセットを表示するには、dbにdbs->マイdb->を使用します.
名前がビデオではなくビデオなのは、モンゴル人が最初の面の小文字+エンディングにsを加えたことを知っていたからだ.
モンゴルモードタイプの確認
Mongooseモードは、Mongooseモデルを構成するためのオブジェクトと考えられます.
https://mongoosejs.com/docs/schematypes.html
モンスモードタイプの定義
モンゴルのすべてはモデルで始まった.各モードはMongoDBコレクションにマッピングされ、そのコレクション内のドキュメントの外観が定義されます.
https://mongoosejs.com/docs/guide.html
.excu
モンズメディアには含まれていない核心的な内容は.許しです.executeはexecute(実行)の略で、別途承諾しなくても、このメソッドをコミットする声明で待機します.そんなことがあるならわかるだろう
要点
Reference
この問題について(クローンオイルパイプ#6 CRUD(1)CREATE&READ), 我々は、より多くの情報をここで見つけました https://velog.io/@jlee0505/유튜브-클로닝-6-DB-이용하여-upload-기능-만들기-CRUD-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol