🛩同等条件でのテーブルクエリーのキャンセル🛩

5633 ワード

前回ポスターに書いたように!
関連付けられたJoin Tableでの実装が完了しました!
Join Tableを実現して使わないのはちょっと残念ですが...
複数のSequeizeメソッド(?)もっと使いたいから!!
正式に実習を始めました!

Postmanでサーバーを検証!


実は最初はテストケースに合格するのを急いでいただけです.
今書いているこのコードは何のためにもよく考えていない.
クライアントがなくて目で確認できないので、もっと茫然としています...
考えてみましたが、今回スプレーで処理したのはデータベースとのコミュニケーションサーバー!
だからコードを調べてポート番号を見つけました!
(実は、稚魚教室に書いただけなのですが…)

そこで,Postmanにより正式にデータを検討した.

こんないい検索ですね.

結合テーブルを使用します。


実際にSequelizeの結合テーブルを使う方法を使いたいのですが...
そこで自分で任務をやってみました!

MISSION:urlを入力すると、そのurlのユーザー名が返されます!

🙋🏻‍♂️ルート!



そのままルーティングが追加されました!

🙋🏻‍♂️関数を作成します。


公式文書を調べてみました!findAll、where、includeを使うのは知っています!
  getUserName: async (req, res) => {
    let result = await models.url.findAll({
      where: { id: req.params.id },
      include: [
        {
          model: models.user,
          // 어떤 테이블과 조인할 것인지!
          // 특히 헷갈렸던 부분... user, users, "user", "users" 모두 아님...
          // 작성하고 있는 코드 기준으로 적어줘야 함...
          required: true,
          // 트루 -> 이너쪼인
          // 폴스 -> 레프트 아우터 쪼인!
          attributes: ["name"],
          // 이 부분이 MySQL로 따지면 SELECT에 해당하는 부분!
          // 이부분이 아직 조금 헷갈리는데...
        },
      ],
    });
    console.log(result);
    res.status(200).send(result[0].user.name);
  },
このように記入しました!!!
実はMySQLで結合表を使うのも複雑ですが、どこで何を書けばいいのか分かりません.
だからまずはSQL query文を书きました!!
SELECT user.name, url.id
FROM user
JOIN url
ON user.id = url.userId
WHERE url.id = params.id;

🙋🏻‍♂️ 結果を確認!


まずユーザー・テーブルと
ULLテーブルに多くの情報を入力しました!

結果を確認する前に、
実は書き終わってから少し混同していますか?実際、これまで解決されていなかった部分がattributesの部分です.
私から見れば、以下にresultのみを送信すればattributes: ["name"]のように書くこともでき、名前だけを出力すると思っていましたが、私の予想は間違っていました.

このように、name部分がurlに付着して出力します!!
調べてみましたがattributesはchildモデルの色を選択しています...attributes: ["name", "email"],と書きました

結果はそのままプリントアウト!res.status(200).send(result[0].user.name);のように少し修正して自分で作った任務を完成しました.

では、当初resultに名前だけを含ませようとしたら、どうすればいいのでしょうか?しかし、この部分はまだ解決されていません...次も考えて終わり