MEAN Stackは、すべてのjavascriptで書かれたアプリケーションをサポートするソフトウェアプログラムのソフトウェアバンドルです。つまり、データベースのバックエンドとフロントエンドにjavascriptを使用できます。
実際には、スタックに含まれる各ソフトウェアプログラムの最初の文字を意味します。M ongoDB、E xpressjs、A ngularJSおよびN odeJS。
MongoDBはそうdocuments
呼ばれる格納する(JSONに類似)BSONを使用するのNoSQLデータベースです。ドキュメントを、従来のデータベースの単一のエンティティまたは行であるかのように見てください。これらのエンティティ(または行)は、テーブルと比較可能なcollections
(ドキュメントの集合)に格納されます。
したがって、第1の質問への答えは、users
コレクションを開き、すべてのユーザードキュメントへのアクセスを許可します。
NodeJS設計により、非同期です。これにより、NodeJSは単一のスレッド*上で実行しながら多くの操作を実行できます。 NodeJSはシングルスレッドなので、コードnon-blocking
を書く方法が必要です。つまり、操作を開始し、他のコードを実行し、その操作が終了するたびに戻ることができます。
users
コレクションへのアクセスをリクエストした場合は、時間がかかります。アプリケーションの他の部分が処理を続けることを可能にするために、コールバックを使用します。コレクションにアクセスすると、コールバックが実行され、最初にアクセスを要求したときに実行したい操作を実行できます。
* NodeJSは実際には複数のスレッドで動作しますが、開発者はマルチスレッドについて心配する必要はありません。NodeJSはこれを行います。
これは、前のポイントが何であるかを正確です。
.toArray()
メソッドは、カーソルからすべてのドキュメントを含む配列を返します。このメソッドは、カーソルを完全に反復し、すべてのドキュメントをRAMにロードしてカーソルを使い果たします。 Source
.toArray()
は、集中的に処理されます。 .toArray()
が終了するまで待たずにコードの残りの部分を処理し続けるため、callback
としておくことで、準備ができたらいつでもコレクション処理に戻ることができます。
var users = db.collection("users").find({}).toArray();
これは、しかし、あなたのコードをブロックします:私はあなたが実際にブロックコードを書いて、それをこの方法で行うことができると思いdocsから読み取ることができるものから、
完全に。これを行うには、決して正当な理由はありません。
免責事項:理解を容易にするため、この説明では説明を省略または簡略化しました。
これは本当に良い答えです!ありがとうございました!しかし、どのようにしてこれらのコールバックをいつ使うべきかを知ることができますか?私は時間がかかるものがあればそれを使うべきだと思っていますが、いつ使うのが良いのでしょうか?あなたがちょうどそれを説明したやり方で、私は、ファイルやデータベースを扱うときにコールバックを使うことは非常に基本的なことであると結論づけることができます。 –
あなた自身のソフトウェアを書くときには、あなたがやっている操作がどれほど集中的であるか自問することはよくあります。 2つの数値を追加しているだけでは、コールバックはパフォーマンスを向上させません(実際にはオーバーヘッドのために悪化する可能性があります)。ただし、データベースに保存したりファイルに書き込んだりする場合はコールバックが不可欠です。それは本当に嫌な感じですが、私はあなたがそれのハングアップを取得すると確信しています。あなたが見つけたNPMモジュールはおそらくサポートコールバックを使用するので、それらを使用する必要があります。したがって、データベース操作やファイル操作を行うときにコールバックを実行している可能性が非常に高いです。 –
ありがとうございました。 –