さて、このビデオでは、データを埋め込むことで2つのマングースモデル間の関連付けを1対多に設定する方法を紹介し、ユーザーと投稿を処理する予定です。
これはFacebookやブログアプリのようなもので、ユーザーは1人のユーザーしかいないが、ポストは1人のユーザーに属しており、実際のアプリケーションはルートやテンプレートで作成されません。
データとデータモデリングだけに焦点を当てます。
ですから、私が作ったこの関連ディレクトリの中に新しいファイルを作ることから始めるつもりです。
あなたはどこにいてもこれを行うことができます。
それは単一のファイルになるだろう。私はそれを埋め込み点Jと呼ぶだろう。 S.
私はそれを開き、ここでは私がまだインストールしていないmongooseが必要になりますので、私は次にそれを行い、PMはmongooseをインストールします。
そこに行く。
スペースを作ってみましょう。
そして、それを必要とすると、次のことはmongooseが接続するようにデータベースに接続することです。これはデータベースの名前にまったく変わりませんが、Mangu
DBコロンスラッシュスラッシュローカルホストスラッシュとロールコールでなければなりません。
このブログのデモはちょうどそのように保存してください。
これで、ユーザーがいるモデルを2つ定義する必要があり、投稿があります。
ユーザーは電子メールと名前とポストだけを持っています。
それはタイトルとその後の内容を持つつもりです。
実際の投稿そのもの。
そこで、ユーザーがスキーマを定義する必要から始めます。
今のところユーザースキーマは新しいmongooseスキーマと等しくなり、次に文字列と同じ名前の文字列である電子メールを作成します。
これまでモデルを作成しています。
ユーザーはmongooseモデルユーザーに等しい。
Cingularのバージョンとユーザースキーマは、私たちが構築しているものです。
そして私たちはそれを保存します。
OK。
今度は投稿に移りましょう。
今度は、別のスキーマを作成するつもりです。これは、var
postスキーマが新しいmongooseスキーマと等しくなり、各投稿には文字列とタイトルだけで文字列が作成されます。
そして、それをモデルvar postモデルに変換する必要があります。これは、マングース・ストップ・モデル・ポスト・ポスト・ポスト・スキーマと同じです。
右。
そこで、2つのスキーマを設定して2つのモデルを作成しました。
ここで少し部屋を作ってみましょう。
だから我々は私たちの投稿を持っており、我々はユーザーを持っています。
これを実行してみましょう。
ノード埋め込みDutcherはいを開始する構文エラーがないことを確認してください。
いいね。
さあ、私たちのモデルが機能することを確認するために、一人のユーザーを作ってみましょう。
だから、私は新しいユーザーを作るつもりですので、私たちは新しいユーザーが新しいユーザーに等しいと呼ぶでしょうし、私たちは電子メールと電子メールを渡します。チャーリーはエドゥの周りで、名前はチャーリーになりますブラウンちゃん。
新しいユーザーを保存するために必要なもの。
そして、私たちのコールバックにエラーを追加し、データが返ってきます。これはうまくいけば私たちのユーザーであり、あなただけではありません。
エラーがログエラーをキャンセルした場合。
それ以外の場合は、そのログユーザーをキャンセルします。
だから、これまでの団体はありません。
私はちょうど我々のユーザーモデルが動作するかどうかを確認するためにテストしています
だから、Dutchesseを埋め込んだノードを実行して、名前と電子メールが自動的に生成されたIDでユーザを戻しましょう。
グレートしてみましょう投稿と同じことを試してみましょう私たちは別のユーザーを取得しないように私たちは新しい投稿と同じようにしようとしている投稿とタイトルがあり、ポストのタイトルはリンゴその投稿またはコンテンツのテキスト。
私はそれがはいコンテンツと呼ばれると思います。
おいしいよ。
大丈夫。
素晴らしいブログ投稿があります。
私たちはすべてがうまくいっていることを確認してから、私たちは実際に私たちとコールバックをもう一度保存する新しい投稿を行うつもりです。
あなたがこのコールバックをmongooseに渡している直感的なことを見ているので、このパターンに慣れていることを望みます。
Mongaを使って何かをするたびに、節約更新を作成して最終的に削除して、最初のパラメータとしてエラーを、次に2番目のパラメータとしてデータをコールバックする必要があります。
大丈夫。
だからエラーがログアウトした場合は、それ以外の場合は、そのブログ投稿に来るこれらの両方が動作することを確認します。
それを試してみましょう。小さな問題に遭遇します。
新しい投稿を作成しようとしているときに投稿が定義されていないことがわかります
そしてそれが起こる最も論理的な理由は、私たちがモデル以外の名前を投稿以外の名前にした場合です。
そしてあなたは何を知っていますか？
私たちはそれをポストモデルと命名しました。私はそれを間違って指定しました。
だから、ポストと一緒に行こう。
私たちはそれをポストモデルとして保存し、ここでそれを変更することができました。
しかし、モデルを持つ必要がないようにしているのは、モデル自体の名前だけでなく、大文字のエンティティポストP。 今すぐ一致するように。
右はここに投稿して投稿しています。
これをもう一度試してみましょう。今回は新しい投稿コンテンツを追加します。
彼らはリンゴのおいしいタイトルの反映です。
これで2つのモデルが正しく機能していることを確認したので、投稿をしてユーザーを作ることができます。
しかし、現在のところ、彼らはお互いに関係がありません。私たちは、ユーザーが多くの投稿を所有したり所有したりすることを覚えておきたいと思います。
だからそれは1対多の関係です。
それを達成するための方法は、ユーザースキーマの代わりにデータを埋め込むことです。
だから、このように見えるだろう。
それから、ちょっとだけ説明します。
ユーザーの内部と投稿の属性の内側に投稿の属性を設定します。
私たちはたくさんの投稿を持ち、その作業のために配列内に投稿スキーマを追加する必要があります。
だから、ポストを文字列、数字、またはブール値にするのではなく、私たちはそれをポストの配列のリストにしたいと思っています。ポストスキーマを書く必要があります。これは正直なところ少し混乱します。
私はそれがモデルの名前を投稿するだけだったと思うが、それはちょうど方法です。
それはスキーマの名前でなければなりません。私たちはこれを今実行すると、ポストケモが何であるかを知ることができず、それは第2の定義であるからです。
したがって、データを埋め込む場合は、最初に定義する必要があります。
そこで、ポスト・スキーマとポスト・モデルを定義し、ユーザー・スキーマを定義し、ユーザー・スキーマ内に、postsという属性を追加します。これはポストの配列です。
だから私たちのデータがこのようなものになるか、またはユーザーの名前が電子メールに送られ、ちょうどちょっとした名前をつけた後、投稿と投稿が配列されます。
その配列の中には複数の投稿があるので、それぞれの投稿にはタイトルとコンテンツがあり、ユーザーはそのような投稿を多く持つことができます。
したがって、取得するすべての投稿について、特定のユーザーの投稿属性ではなく新しい投稿になります。
それでは、それを手に入れましょう。
ユーザーを作成してから、そのユーザーに投稿を追加する方法を示して、私たちがそのユーザーを使うことができるようにしましょう。
ここのチャーリーブラウン
新しいユーザーはCharlie Brownと同等です。
私は既にチャーリー・ブラウンをデータベースに入れているので、電子メールと名前の一部を変更します。
一緒に行こう、ホグワーツエドで私のものです。
そして、私たちはこれを私の叔母のグレンジャーに変えます。
大丈夫。
そのため、新しいユーザーがいて、そのユーザーに投稿を追加します。
彼らがしなければならないのは、それが配列なので、プッシュする新しいユーザー投稿を書くことだけです。
そして、私は新しい投稿を押して、ポストはタイトルを持っています。私の次のポストのタイトルは、ポリジュースの飲み物の作り方です。内容はちょうど冗談でしょう。
それを大丈夫に学ぶポーションクラス。
それは本当に問題ではありません。
だから私たちはタイトルといくつかのコンテンツを持っています、そして、私たちはここで定義した新しいユーザーにこの投稿をプッシュします。
最後に、新しいユーザーを救うだけです。
そのように保存する新しいユーザー。
そして、私たちは実際にこれを書いているので、私はそれを再利用してコメントを外し、これを試して保存します。
もしエラーがあれば、私たちに知らせます。
さもなければ、それは私達にユーザーを示して、そしてこの記事のすべてのコメントを投稿についてここにコメントし、ちょうどそれを保存し、何が起こるか見てみましょう。
そこで私たちはあなたが定義した投稿スキーマを持っています。ユーザースキーマがあり、ここには新しい部分があります。
それから、新しいユーザーを作って、そのポストに押し込んでいます。
それを試してみましょう。
OK。
このユーザーには、Hogwarts氏にHermione Granger氏の名前を思い出させる電子メールが印刷されています。投稿の代わりに新しい投稿があります。
だからうまくいっている。
ここで私がこれをコメントアウトし、新しいユーザーを作成するのではなく、既存のユーザーを取得してみましょう。
だから私は彼女の採掘を取り出すつもりです。
だから私はユーザーの検索とそれを行うでしょう。
そして、私は見つけるものを使うつもりです。
そうでなければ、findは私に配列を与え、私はちょうど1つのものを戻したい。
だから、名前がHermione
Grangerの場所を見つけることができない場合は、標準のコールバックエラーを実行し、このユーザーに電話するだけです。
うまくいけば、あなたは今、それに慣れています。
これはここではコールバックで、私たちがモンゴースで何かをするたびに書いています。それから私たちはちょうどそれをやります。
これまで相談ダイアログのエラーがあった場合、それ以外の場合は常にユーザーを不具合させ、余分なブラケットを持っています。
だから、これは私の新しい背中に何も新しいものを見つけることではありません。
私たちはただ新しいユーザーを探していて、うまくいきます。
ユーザーが戻ってきます。
彼女の名前は彼女がHogwartsで彼女のお金をEメールで送る彼女の心です。
今は別の投稿を追加したいと考えています。なぜなら、これは1対1であるはずだからです。
したがって、1人のユーザーが複数の投稿を持つことができます。
今、それをやりましょう。
だから私たちがユーザーを見つけたらelseの内側に新しい投稿を追加するコードを実行して、このユーザーが以前と同じようにプッシュアップしているように見えますが、今回は別の投稿を押してプッシュしますタイトルとタイトルは3つです。
私は本当に嫌いで、内容はますます多くなります。
そして、ボルデモート。
非常に創造的なポストは、私に思い出させるすべての権利は、我々は先に行くとこれを保存します。
だから私たちはまだユーザーを保存する必要がありますし、その後私たちはコールバックに追加します。
これらのエラーのもう1つ。
そして、このユーザーをもう一度呼び出します。
そして、ここではエラーコンソールのログエラーが発生した場合は、代わりにログユーザーをキャンセルします。
これは、コールバックと呼ばれる人の話です。
地獄私たちはここで多くのコールバックを持っています。
私たちはこの最初のものを持っています。この最初のものは、私たちが得ているユーザを見つけてから新しい投稿をしていくことを心に込めています。
しかし、実際にはデータベースに追加されません。
私たちはそれを保存しなければなりません。
それで、ここでユーザーを保存し、このユーザーを保存します。
これらの2つは、ユーザーが最初に気がついたときに戻ってきて、保存しているユーザーを指しています。このユーザーは、保存から戻ってくるものを参照しています。
したがって、このユーザーはここに新しい投稿が追加され、データベースに保存されます。
それはMongoから私たちに戻ってくるデータです。それから私たちはそれを印刷しています。
今すぐ試してみましょう。
だから私はこの最初の反プロットログを取り除く。
そのようにしておきます。
ログに関するアカウントを妨害する他のコードが実行されていないことを確認しましょう。
それを実行しましょう。
大丈夫。
だから私たちは今、最初の1つと2つ目の投稿を持つ1人のユーザーHermioneを印刷していることと、それらはどちらも単一のユーザーのpost属性の中に保存されているということです。
それは1対多です。
OK。
それが私が示したいものです。
これについて簡単に説明しましょう。
そこでモンゴースに着くことから始まり、2つのモデルがあり、彼らは独立してスタートしました。
そして、このポストスキーマ配列をユーザースキーマに追加することによってそれらを関連づけました。
これで、ユーザーは投稿の配列を持ち、空になります。
しかし、ポストドットプッシュを押すことでそれを追加し、次のビデオに保存し、オブジェクト参照と呼ばれるものを使用してデータを関連付ける別の方法を示しました。