NodeJSとMongoDBを接続してください
12167 ワード
完全なスタック開発に入るには、サーバー側のコードとデータベースで動作することができます.JavaScriptで動作している場合は、ノードを使用している可能性があります.
この記事は、すでにそれぞれの基本を持っていると仮定します.ここでの主なトピックはどのように我々はノードとmongoをお互いに話を取得することです.
新しいユーザとしてログインしたり登録したりする必要があります.我々がすでに勢いを得ている単純な最初のステップ.
サイトにまだクラスタがない場合は、1つを作成する必要があります.私がゼロのクラスタを持っていたので、久しぶりです.
ない場合は、心配しないでください、どこか下にある画面には、“新しいクラスタを作成する”と言う緑色のボタンがあるはずです.私のアドバイスは、私は設定のいずれかではなく、クラスタの支払いをしていないとして、ちょうどデフォルトの設定を維持し、無料のクラスタを作成することを確認します.
あなたがクラスタを持っているか、あなたがすでに1を持っているならば、あなたのスクリーンは上記の絵が好きです.次に、クラスタ名の下にある小さな接続ボタンをクリックする必要があります.そして、それはあなたにこの画面を示します.
アプリケーションを接続するというミドルオプションをクリックします.
我々はほとんどのウェブサイト上で行われます.あなたがこの接続ポップアップのステップ1をするのを確実にしてください-あなたのドライバーを選択してください(あなたがこれを読んでいるならば、おそらくノードです)、そして、バージョンが適切であることを確認してください.私たちがノード14の上にいるので、私はあなたが3.6またはそれ以降のオプションを選択しておくのにすべて安全であると仮定します.
次に、[コピー]ボタンをクリックしてアプリケーションを実際にデータベースにアクセスする方法を示します.交換する必要があります
今、我々はあなたのアプリケーションコードに行かなければなりません.どこであなたのサーバーコードの生活はノードとmongoの間の接続を作成するためにクライアントが必要になります.ここに私のプロジェクトディレクトリの簡単な表現があります.
まず第一に我々はいくつかの輸入品を持っている.The
The
現在 最初は接続文字列です(必要ならここで文字列を貼り付けるだけです). 追加オプションを渡すオブジェクト
コメントを私に知らせてください
Alright、次のコードのチャンク.
明らかに我々はエクスポート
現在、このコードの大部分は非同期IFEです.それは私たちの接続を確立し、サーバーがシャットダウンして接続を閉じるときの目的です.そこのコメントは、特定の部分を明確にするのを助けるべきです. MongoClientオブジェクトから利用できるメソッドを待って接続します その後、一度我々は得る
どうやってこれを使うの
我々のファイルから我々のクライアントを輸入してください その後、単にtry/catchブロックのようにそれを使用します ここで注意してください.
私の経験では、MongoDBは、物事がどのようにフォーマットされるかについて非常に特別でありえます
これは、読み取り、書き込み、削除、または更新しようとしているデータを確実に確認することが重要です.
私は、データを必要として、データがどのように見えるべきであるかについて来る必要があるプロジェクトについて心配する代わりにMongoDBのサンプルデータを使うことを勧めます.
クラスタを作成すると、基本的にいくつかのサンプルコレクションをダウンロードできます.
それを行うには、インデックスのような迅速なプロジェクト構造をスピンします.HTML、Boobone CSSとこの記事で見たサーバー側のコード.正確にデータを渡す方法で再生し、サーバー側(それは全く別の記事です)にクライアント側の要求を取得するだけでなく、
タスクの時間は、ほとんどのものよりも多くを助ける!
この記事は、すでにそれぞれの基本を持っていると仮定します.ここでの主なトピックはどのように我々はノードとmongoをお互いに話を取得することです.
ステップ1:訪問MongoDBのウェブサイト
新しいユーザとしてログインしたり登録したりする必要があります.我々がすでに勢いを得ている単純な最初のステップ.
ステップ2 :クラスタを作成し、接続する
サイトにまだクラスタがない場合は、1つを作成する必要があります.私がゼロのクラスタを持っていたので、久しぶりです.
ない場合は、心配しないでください、どこか下にある画面には、“新しいクラスタを作成する”と言う緑色のボタンがあるはずです.私のアドバイスは、私は設定のいずれかではなく、クラスタの支払いをしていないとして、ちょうどデフォルトの設定を維持し、無料のクラスタを作成することを確認します.
あなたがクラスタを持っているか、あなたがすでに1を持っているならば、あなたのスクリーンは上記の絵が好きです.次に、クラスタ名の下にある小さな接続ボタンをクリックする必要があります.そして、それはあなたにこの画面を示します.
アプリケーションを接続するというミドルオプションをクリックします.
我々はほとんどのウェブサイト上で行われます.あなたがこの接続ポップアップのステップ1をするのを確実にしてください-あなたのドライバーを選択してください(あなたがこれを読んでいるならば、おそらくノードです)、そして、バージョンが適切であることを確認してください.私たちがノード14の上にいるので、私はあなたが3.6またはそれ以降のオプションを選択しておくのにすべて安全であると仮定します.
次に、[コピー]ボタンをクリックしてアプリケーションを実際にデータベースにアクセスする方法を示します.交換する必要があります
<password>
あなたの実際のパスワードと<database>
あなたの実際のデータベース名で.潜在的に、あなたは交換する必要があります<username>
しかし、通常、私は文字列をコピーする前に私のためにそれを自動挿入します.ステップ3 :セットアップ
今、我々はあなたのアプリケーションコードに行かなければなりません.どこであなたのサーバーコードの生活はノードとmongoの間の接続を作成するためにクライアントが必要になります.ここに私のプロジェクトディレクトリの簡単な表現があります.
-client-> (front-end code)
-server
|__db
| |_client.js
| |_index.js
|
|__server.js
|__.env
まず上を見ましょうclient.js
それが最初の部分であるので、我々は我々の接続を確立する必要があります.import dotenv from 'dotenv';
import { MongoClient } from 'mongodb';
dotenv.config();
const client = new MongoClient(
process.env.MONGODB_URI,
{
useUnifiedTopology: true,
},
);
// Close the connection after the server is shut down
(async () => {
await client.connect();
// 'CTRL + C' -> 'SIGINT' means signal interrupt i.e. server shut down
process.on('SIGINT', () => {
client.close().then(() => {
console.info('SIGINT received: DB connection is closing');
// Avoid plugging up ports - ensures all processes are stopped
process.exit(0);
});
});
})();
export default client;
たった今そこに行くので、チャンクでそれを見ましょう.まず第一に我々はいくつかの輸入品を持っている.The
dotenv
インポートはコピーされた文字列を最後のステップから保存するだけです.我々のクラスタのMongoのウェブサイトからコピーされたその長いストリングは.env
あなたは私のディレクトリ構造を見ました.The dotenv.config()
単に私が私が2007年に宣言したそれらの環境変数を使用するのを許します.env
こちらのファイルで.The
process.env.MONGODB_URI
コピーした実際の文字列に置き換えることができます.それで、あなたがセットアップAを望まないならば.env
する必要はありません.現在
MongoClient
インポートは、それが何の役割であるかについて、かなり自明です.The const client =
我々が新しい宣言をする部分MongoClient
引数を渡します.useUnifiedTopology: true
import dotenv from 'dotenv';
import { MongoClient } from 'mongodb';
dotenv.config();
const client = new MongoClient(
process.env.MONGODB_URI,
{
useUnifiedTopology: true,
},
);
正直に言うと、私はなぜ100 %ではないuseUnifiedTopology: true
我々を助けます.こちらですMongo's Reference Page on it . 私は読んで、最も基本的な意味では、将来のアップデートを容易にするための一歩のようだ.しかし、私は全く間違っていることができました.コメントを私に知らせてください
useUnifiedTopology
そうです!Alright、次のコードのチャンク.
明らかに我々はエクスポート
client
我々はので、ちょうどそのビットを得ることができます作成しました.現在、このコードの大部分は非同期IFEです.それは私たちの接続を確立し、サーバーがシャットダウンして接続を閉じるときの目的です.そこのコメントは、特定の部分を明確にするのを助けるべきです.
connect()
. かなり簡単.SIGINT
サーバからデータベース接続を閉じます.私たちの両親は私たち自身の後にクリーンアップすることを教えたので、それは私たちの部屋だけではない!// Close the connection after the server is shut down
(async () => {
await client.connect();
// 'CTRL + C' -> 'SIGINT' means signal interrupt i.e. server shut down
process.on('SIGINT', () => {
client.close().then(() => {
console.info('SIGINT received: DB connection is closing');
// Avoid plugging up ports - ensures all processes are stopped
process.exit(0);
});
});
})();
export default client;
Step 4 :クライアントを使う
どうやってこれを使うの
client
それは私たちのために接続していますか?ここから1つの方法がありますdb/index.js
.import client from './client';
// GOOD
export const addNewUser = async (newUser) => {
try {
return await client.db('throwaway').collection('users').insertOne(newUser);
} catch (err) {
throw new Error(err);
}
};
client
.db(<NAME OF YOUR DATABASE>)
.collection(<NAME OF YOUR COLLECTION>)
.<METHOD YOU NEED>
newUser
クライアント側リクエストから渡されるオブジェクトです.そして、それが既にオブジェクトであるので、私は直接それをinsertOne
メソッド.前進
私の経験では、MongoDBは、物事がどのようにフォーマットされるかについて非常に特別でありえます
insertOne()
, find(0)
, findOneAndUpdate()
. これは、読み取り、書き込み、削除、または更新しようとしているデータを確実に確認することが重要です.
練習する
私は、データを必要として、データがどのように見えるべきであるかについて来る必要があるプロジェクトについて心配する代わりにMongoDBのサンプルデータを使うことを勧めます.
クラスタを作成すると、基本的にいくつかのサンプルコレクションをダウンロードできます.
それを行うには、インデックスのような迅速なプロジェクト構造をスピンします.HTML、Boobone CSSとこの記事で見たサーバー側のコード.正確にデータを渡す方法で再生し、サーバー側(それは全く別の記事です)にクライアント側の要求を取得するだけでなく、
const
あなたのサーバーコードで、それをDBメソッドに渡して、それが更新するかどうか見てください.タスクの時間は、ほとんどのものよりも多くを助ける!
Reference
この問題について(NodeJSとMongoDBを接続してください), 我々は、より多くの情報をここで見つけました https://dev.to/stlnick/connect-nodejs-and-mongodb-3jjcテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol