Create Account #01


今回はアカウントを生成するページを作成します.
前述のセクションでは、MongooseMongoschemaについて説明した.
今回はuserをご紹介します.プレイヤーを扱う際には、以前に学んだことがたくさん使われます.Mongooseschemaなどは私が使います.そして認証(Authentication)を加えます.
ユーザーログインを実現し、ログインの意味を見てみましょう.
ログインしたプレイヤーに覚えてもらう方法もわかります.GitHubでのログインも実現します.ソーシャル・ログインの実現方法について説明します.
ほとんどのソーシャルログインは似たようなパターンで実現されているので、Kindhubログインを例に理解します.
だから私は電子メール、パスワードでログインし、ジハーバーでログインします.
現在、CRUDがユーザとして実装されているのは、生成、クエリー、修正、削除である.
それから、私もパスワードがどうやって作られたか見てみます.私は以前使った内容でこのすべてを体現します.
登録ページにフォームを追加し、会員登録ページにもフォームを追加し、POSTリクエストの処理方法を理解します.
パスワードの確認もあります.履歴書を見ても、履歴書を直してもします.
私たちは十分な既知の情報を持っていて、追加の電子メール、パスワード、セッションも処理します.
まずUserの模型を作ります.modelsフォルダにUser.jsの新しいファイルが作成されました.
これもVideoを作った時のように、同じ過程を経て作らなければなりません.
まずschemaを作成し、MongoMongooseがどのように成長しているかを教えてくれたら、Userを作ります.型番staticを試してみます.
import mongoose from "mongoose";

const userSchema = new mongoose.Schema({});

const User = mongoose.model("User", userSchema);
export default User;
まずはexportmongooseです.このようにしてimport型を作りました.
もちろん、まだUserは作られていません.後で追加します.
現在、schemaからinit.jsからUserまでです.
import "./db";
import "./models/Video";
import "./models/User";
import app from "./server";
その後、importを追加します.現在はUserVideoUserです.
では、今どうやってimportを作りますか?まず、Userが必須です.
const userSchema = new mongoose.Schema({
  email: { type: String, required: true, unique: true },
  username: { type: String, required: true, unique: true },
  password: { type: String, required: true },
  name: { type: String, required: true },
  location: String,
});
これで追加しました.そして、emailは1つしか存在しません.
同じuniqueに複数のアカウントを持つことはできません.emailにも同じアカウントを持つことはできません.
現在はusernameが製作されており、現在はUserが製作されている.
会員加入可能なtemplateを作成します.今回はURLフォルダに作成しました.
既に存在するcontrollersに作成すればよい
ここにはもうuserController.jsがあるので、これ以上する必要はありません.
ここでjoin controllerをするのではなく.
export const join = (req, res) => res.render("createAccount");
このように交換します.res.send("Join")はまだありません.createAccountフォルダにviewが作成されます.createAccount.pugにおいて行われたように、homecreateAccountを使用する.
extends base
extends baseおよびbaseは、extends変数を必要とするので、変数を伝達する.
export const join = (req, res) =>
  res.render("createAccount", { pageTitle: "Create Account" });
pageTitleを変更します.navigationには"createAccount"があります.
その前にlinkに名前を変更します.globalRouter.jsに変えたほうがいいです.rootRouter.jsと言えば、人々は混同する可能性があります.
もちろん、中のコードも変更されます.これでアプリケーションが変更されて仕事がなくなります.globalはもう存在しないからです.globalRouterにおいてもserver.jsglobalRouterに変換される.rootRouterの中にはすでにrootRouterがあります./joinbase.pugに1つ追加します.
    body 
        header
            h1=pageTitle
            nav 
                ul 
                    li 
                        a(href="/videos/upload") Upload Video
                    li  
                        a(href="/") Home
                    li  
                        a(href="/search") Search
                    li 
                        a(href="/join") Join
このように追加そして、今機能しているかどうかをチェックすると、よく機能しています.navigationをクリックすると、joinが表示されます.Create Account準備ができました.
export const join = (req, res) => res.render("join", { pageTitle: "Join" });
すべてjoin controllerに変更されました.ファイル名もそうして、統一性もあればいいです.
しかし、ここでjoinのリクエストが出ることを知っています.postから
rootRouter.route("/join").get(join).post();
だからrootRouter.jsというよりget("/join")です.
次にroute("/join")と書いて、get(join)のためにpostを作ります.functionの名前をfunctionと書くのではなく、変えて使います.以前のやり方でやる.joinjoinに変換します.getJoinから
export const getJoin = (req, res) => res.render("join", { pageTitle: "Join" });
export const postJoin = (req, res) => {};
そしてuserController.jsという新しいpostJoinを作ります.functionにしましたが、まだ何の機能もありません.作成したfunctionを保存します.postJoinから
import { getJoin, postJoin, login } from "../controllers/userController";
rootRouter.route("/join").get(getJoin).post(postJoin);
rootRouter.js,getJoin,postJoin.次に、importgetJoinを入れます.
これで正常に動作します.postJoinの機能を作成する前に、postJoinを作成します.formから
extends base


block content 
    form(method="POST")
        input(name="name", type="text", requeired)
        input(name="email", type="email", requeired)
        input(name="username", type="text", requeired)
        input(name="password", type="password", requeired)
        input(name="location", type="text", requeired)
        input(type="submit", value="Join")
そうします.そして最も重要なのはjoin.pugが必要です.
バックエンドはnameなしでは使用できません.
現在、nameuserControllerでテストが行われています.postJoinから
export const postJoin = (req, res) => {
  console.log(req.body);
  res.end();
};
要求は、userController.jsおよびreq.bodyを使用して終了する.
更新するとconsole.logが見えます.値を全部入力してください.そしてres.end()を確認します.
関連情報をよく伝える.△間違いがあると言っていますが、今は間違いがありません.