Express、Node、MongoDBを使用した基本APIの構築
17332 ワード
過去1週間か2週間、私はMern Stackを学び、コードの中で遊ぶための簡単なチュートリアルプロジェクトを構築しています.身近なものについては、mernは、mongodb、急行、反応、ノード、それはスタックを構成する4つの技術になるための頭字語です.私のバックエンドAPIエンドポイントを作成して、ExpressとNodeを使用してデータベースのサーバーとMongoDBを設定しました.あなたが既に概念/ステップのどれかと若干の親近感を持っているならば、あなたが前後にホップすることができるように、私はいくつかの異なる点にこれを打開するつもりです.
1. MongoDB Setup
2. Packages
3. Creating the Server
4. Models
5. Routes
MongoDBセットアップ
1. MongoDB Setup
2. Packages
3. Creating the Server
4. Models
5. Routes
MongoDBセットアップ
あなたのMongoDBデータベースを作成し、あなたのアプリケーションに接続を取得するいくつかの異なる方法があります.主な方法の一つはMongoDBを直接ダウンロードし、自分のマシン上でサーバーを作成することです.多くの開発者がこれを行うが、このプロジェクトのために使用するつもりですmongoDB Atlas それは物事を実行するために迅速かつ簡単な方法ですので.開始するには、ログを作成するか、無料のアカウントを作成する必要があります.
ログイン後、「新規プロジェクト」ボタンをクリックして新しいプロジェクトを作成します.プロジェクトの名前を入力し、次のボタンをクリックし、次の画面で「プロジェクトを作成」ボタンをクリックします.次に、「クラスタを構築」ボタンをクリックして、自由共有クラスタオプションを選択して、プロジェクトのクラスタを構築する必要があります.我々がする必要がある最後のことは、提供されるオプションから、クラウドプロバイダとサーバーの場所を選択することです.個人的に、私は彼らが私の場所に最も近いサーバーを持っていたので、私はAWSを選びました、しかし、この部分は個人的な好み次第です.他のセクションでは変更する必要はありませんが、クラスタ名を変更するようなこともできます.すべてをクリックして“クラスタを作成”ボタンをクリックし、クラスタが構築されている間待つだけで満足している.これは1 - 3分かかることができますので、少しかかる場合患者.
我々はサーバーを構築し始めるまでこの次のセクションを使用することはありません.したがって、あなたは今情報をつかむことができて、我々がそれを必要とするまで、それを脇に置いておくことができます、あるいは、ちょうどあなたがサーバーを始めるならば、このセクションに戻ってください.いずれにせよ、我々は今我々の新しく作成されたデータベースクラスタに我々のアプリケーションを接続するために必要なものを取得する必要があります.
クラスタに行き、接続をクリックします.ここでは、IPアドレスを追加する必要があります(現在のIPは、あなたが働いているマシンを使用しているなら、うまく動作します)、そして次のステップで接続するために使用するユーザを作成します.「接続メソッドを選択」をクリックし、このプロジェクトでは「アプリケーションを接続」を選択します.既に選択されていない場合は、「ノード」を選択します.あなたのドライバーとしてのjsと接続ストリングをコピーしてください.これは、我々のデータベースに接続するために我々のサーバーで使用するものです.次のようになります.
パッケージ
次に、私たちが使用するパッケージについて簡単に話したいと思いました.最初は明らかですexpress
ノードのライトWebフレームワークです.私たちは私たちのバックエンドサーバーを構築するために使用されるでしょう.また、使用されますcors
, dotenv
, mongoose
, and nodemon
. cors
クロス源リソース共有の略で、サーバーから外部のリソースにアクセスできます.dotenv
私たちは簡単に使用するようになります.env
我々のデータベースユーザ名とパスワードなどの敏感な変数を保存するファイル.mongoose
ノードでMongoDBとの対話を支援します.我々のための単純なJS.最後にnodemon
我々のファイルを変更するたびに、自動的にサーバーを再起動します.
我々は簡単な概要を持っているので、すべてを設定しましょう.ルートバックエンドフォルダに移動し、package.json
使用するファイルnpm init -y
.
次に、使用して依存関係をインストールしますnpm install express cors mongoose dotenv
. 最後にインストールしましょうnodemon
使用によって世界的にsudo npm install -g nodemon
今、我々はサーバーの構築を開始する準備が整いました!
サーバーの作成
我々がする必要がある最初のことはserver.js
ファイルを必要とします.ここでコードを設定しますdotenv
我々のアクセスを許す.env
ファイル.
// Require packages
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
// Configure dotenv
require('dotenv').config();
次に、割り当てによってサーバーを作成しますexpress()
にapp
変数を作成し、port
我々が通過する変数listen()
後に聞いてポートを我々のアプリを教えてください.
// Middleware
app.use(cors());
app.use(express.json());
ここでは私たちのアプリを教えてuse
我々が欲しいミドルウェア.
// Connect to mongoDB server
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, {useNewUrlParser: true, useCreateIndex:true, useUnifiedTopology: true});
const connection = mongoose.connection;
connection.once('open', () => {
console.log("MongoDB database connection established successfully");
})
このコードは当社のMomgoDBアトラスデータベースにサーバーを接続しています.The uri
変数は、我々のクラスタを設定するときに得た接続文字列をロードします.env
ファイル.我々は、いくつかのオブジェクトフラグと一緒にマングースのconnect
関数.(フラグは減価償却問題に対処します)最後に、接続が開いているときに実行されるコンソールログを持っています.
// Require and use Route files
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
ここで、我々は我々のルータファイルを要求して、使うつもりです.ファイルを作成する前にこれを含めるとエラーが発生しますので、必要になるまでコメントしてください.ちょっと我々が我々のサーバーでルートを含む方法であるということを知っていてください.以下のパターンに従います.const <model-name>Router = require(<file-path>);
それからapp.use(<model-root-path>, <router-variable>);
// Server listen
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
})
我々がする必要がある最後のことは、我々のポートを我々のポートを聞くことによって我々がそうすることによってする我々のサーバーに話すことですport
変数app.listen()
. ここでは、私たちのサーバーがどのポートを実行しているかを伝えるコンソールログも含みます.
モデル
私たちのモデルを作成するのは簡単です.MongoDBは、ドキュメントまたはNOSQLデータベースですので、例の各インスタンスUser
モデルはJSONに似たドキュメントとして保存されます.このモデルを作成するには、models
我々が作成するフォルダuser.model.js
ファイル.ここでは、データベースモデルのスキーマを作成します.これは比較的簡単ですので、以下のコードを投稿して説明します.
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
username: {
type: String,
required: true,
unique: true,
trim: true,
minlength: 3
}
}, {
timestamps: true
})
const User = mongoose.model('User', userSchema);
module.exports = User;
だからまず必要mongoose
そして、Schema
変数.次に、新しい変数を宣言しますuserSchema
どちらが新しいSchema
オブジェクトを渡します.
このオブジェクトのキーは、我々が我々のモデルのために欲しいものであるでしょう.この場合、私たちはユーザーに物事をシンプルに保つためにユーザー名を持つことを望みます.各キーの値は、プロパティの検証を指定する別のオブジェクトになります.あなたは、我々が我々が欲しいとわかるのを見ることができますusername
活字があるString
, 必要とユニークで、余分な空白をトリムし、3の最小の長さを持つ.また、タイムスタンプを持っているモデルを指定する2番目のオブジェクトを渡します.MongoDBは自動的に我々のインデックスを追加します.
最後に、変数をすべて詰め込み、それをエクスポートします.
路線
ホームストレッチ、我々はほとんどそこにある!我々がする必要がある最後のことは、APIのエンドポイントルートを作成することです.新規作成routes
フォルダを作成するusers.js
私たちの仕事のファイル.
const router = require('express').Router();
let User = require('../models/user.model');
我々が我々のファイルでする最初のことは、我々と同様に急行ルータを必要としますuser
モデルファイル.
router.route('/').get((req, res) => {
User.find()
.then(users => res.json(users))
.catch(err => res.status(400).json(`Error: ${err}`))
});
これは私たちのためのコードです/users/
サーバが受信するルートGET
リクエスト.この実装は、成功した場合やエラーコードとメッセージがない場合はすべてのユーザのリストを返します.簡単にこれを編集することができます任意の機能を使用するように.
ここでの基本パターンはroute
on router
と希望のルートで渡す.次に、どのような要求を処理するかをメソッドに連鎖させますGET
) そして、request
and response
引数として.これらはサーバによって受信されたリクエストに応答し、返送することができます応答.
私たちはfind()
メソッドUser
モデルは、データベース内のすべてのユーザーを検索します.これは、我々が扱う約束を返します.then()
and .catch()
. 成功した場合、我々は応答をJSONとして得たユーザのリストに設定します.そうでなければ、エラーコードとメッセージをリレーするために応答を設定します.
module.exports = router;
最後に我々は我々のサーバーファイルにルートを接続できるようにエクスポートします.私がファイルをセットアップするまで、私が言ったその部分は働きませんか?これです.
上記のルート宣言パターンを使用すると、別のリクエストタイプとルートに対してより多くのルートを簡単に含めることができます.これはAの例ですPOST
ユーザの追加要求は次のようになります.
router.route('/add').post((req, res) => {
const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.json('User added!'))
.catch(err => res.status(400).json(`Error: ${err}`))
});
結論
それは本当にそこにある.私はこのガイドは私が通常ポストより少し長くて、知っています、そして、確かに多くの情報があります、しかし、あなたがすでに他のスタックまたはフレームワークを使っているバックエンドAPIを造ることに慣れているならば、これはいくぶん身近に見えるはずです.
これは確かに非常に簡単な概要ですが、私はあなたが上で説明したパターンを使用する方法を見ることができることを確認することができますあなたがフロントエンド反応プロジェクトにデータを提供するために使用できるより意味のあるAPIにこれを展開することができます.何か新しいことを学びました!
あなたがこのポストが好きであるならば、他のどこかに私について来てください.Github , または.ハッピーコーディング!
Reference
この問題について(Express、Node、MongoDBを使用した基本APIの構築), 我々は、より多くの情報をここで見つけました
https://dev.to/kjdowns/building-a-basic-api-using-express-node-and-mongodb-160f
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
次に、私たちが使用するパッケージについて簡単に話したいと思いました.最初は明らかです
express
ノードのライトWebフレームワークです.私たちは私たちのバックエンドサーバーを構築するために使用されるでしょう.また、使用されますcors
, dotenv
, mongoose
, and nodemon
. cors
クロス源リソース共有の略で、サーバーから外部のリソースにアクセスできます.dotenv
私たちは簡単に使用するようになります.env
我々のデータベースユーザ名とパスワードなどの敏感な変数を保存するファイル.mongoose
ノードでMongoDBとの対話を支援します.我々のための単純なJS.最後にnodemon
我々のファイルを変更するたびに、自動的にサーバーを再起動します.我々は簡単な概要を持っているので、すべてを設定しましょう.ルートバックエンドフォルダに移動し、
package.json
使用するファイルnpm init -y
.次に、使用して依存関係をインストールします
npm install express cors mongoose dotenv
. 最後にインストールしましょうnodemon
使用によって世界的にsudo npm install -g nodemon
今、我々はサーバーの構築を開始する準備が整いました!サーバーの作成
我々がする必要がある最初のことはserver.js
ファイルを必要とします.ここでコードを設定しますdotenv
我々のアクセスを許す.env
ファイル.
// Require packages
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
// Configure dotenv
require('dotenv').config();
次に、割り当てによってサーバーを作成しますexpress()
にapp
変数を作成し、port
我々が通過する変数listen()
後に聞いてポートを我々のアプリを教えてください.
// Middleware
app.use(cors());
app.use(express.json());
ここでは私たちのアプリを教えてuse
我々が欲しいミドルウェア.
// Connect to mongoDB server
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, {useNewUrlParser: true, useCreateIndex:true, useUnifiedTopology: true});
const connection = mongoose.connection;
connection.once('open', () => {
console.log("MongoDB database connection established successfully");
})
このコードは当社のMomgoDBアトラスデータベースにサーバーを接続しています.The uri
変数は、我々のクラスタを設定するときに得た接続文字列をロードします.env
ファイル.我々は、いくつかのオブジェクトフラグと一緒にマングースのconnect
関数.(フラグは減価償却問題に対処します)最後に、接続が開いているときに実行されるコンソールログを持っています.
// Require and use Route files
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
ここで、我々は我々のルータファイルを要求して、使うつもりです.ファイルを作成する前にこれを含めるとエラーが発生しますので、必要になるまでコメントしてください.ちょっと我々が我々のサーバーでルートを含む方法であるということを知っていてください.以下のパターンに従います.const <model-name>Router = require(<file-path>);
それからapp.use(<model-root-path>, <router-variable>);
// Server listen
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
})
我々がする必要がある最後のことは、我々のポートを我々のポートを聞くことによって我々がそうすることによってする我々のサーバーに話すことですport
変数app.listen()
. ここでは、私たちのサーバーがどのポートを実行しているかを伝えるコンソールログも含みます.
モデル
私たちのモデルを作成するのは簡単です.MongoDBは、ドキュメントまたはNOSQLデータベースですので、例の各インスタンスUser
モデルはJSONに似たドキュメントとして保存されます.このモデルを作成するには、models
我々が作成するフォルダuser.model.js
ファイル.ここでは、データベースモデルのスキーマを作成します.これは比較的簡単ですので、以下のコードを投稿して説明します.
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
username: {
type: String,
required: true,
unique: true,
trim: true,
minlength: 3
}
}, {
timestamps: true
})
const User = mongoose.model('User', userSchema);
module.exports = User;
だからまず必要mongoose
そして、Schema
変数.次に、新しい変数を宣言しますuserSchema
どちらが新しいSchema
オブジェクトを渡します.
このオブジェクトのキーは、我々が我々のモデルのために欲しいものであるでしょう.この場合、私たちはユーザーに物事をシンプルに保つためにユーザー名を持つことを望みます.各キーの値は、プロパティの検証を指定する別のオブジェクトになります.あなたは、我々が我々が欲しいとわかるのを見ることができますusername
活字があるString
, 必要とユニークで、余分な空白をトリムし、3の最小の長さを持つ.また、タイムスタンプを持っているモデルを指定する2番目のオブジェクトを渡します.MongoDBは自動的に我々のインデックスを追加します.
最後に、変数をすべて詰め込み、それをエクスポートします.
路線
ホームストレッチ、我々はほとんどそこにある!我々がする必要がある最後のことは、APIのエンドポイントルートを作成することです.新規作成routes
フォルダを作成するusers.js
私たちの仕事のファイル.
const router = require('express').Router();
let User = require('../models/user.model');
我々が我々のファイルでする最初のことは、我々と同様に急行ルータを必要としますuser
モデルファイル.
router.route('/').get((req, res) => {
User.find()
.then(users => res.json(users))
.catch(err => res.status(400).json(`Error: ${err}`))
});
これは私たちのためのコードです/users/
サーバが受信するルートGET
リクエスト.この実装は、成功した場合やエラーコードとメッセージがない場合はすべてのユーザのリストを返します.簡単にこれを編集することができます任意の機能を使用するように.
ここでの基本パターンはroute
on router
と希望のルートで渡す.次に、どのような要求を処理するかをメソッドに連鎖させますGET
) そして、request
and response
引数として.これらはサーバによって受信されたリクエストに応答し、返送することができます応答.
私たちはfind()
メソッドUser
モデルは、データベース内のすべてのユーザーを検索します.これは、我々が扱う約束を返します.then()
and .catch()
. 成功した場合、我々は応答をJSONとして得たユーザのリストに設定します.そうでなければ、エラーコードとメッセージをリレーするために応答を設定します.
module.exports = router;
最後に我々は我々のサーバーファイルにルートを接続できるようにエクスポートします.私がファイルをセットアップするまで、私が言ったその部分は働きませんか?これです.
上記のルート宣言パターンを使用すると、別のリクエストタイプとルートに対してより多くのルートを簡単に含めることができます.これはAの例ですPOST
ユーザの追加要求は次のようになります.
router.route('/add').post((req, res) => {
const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.json('User added!'))
.catch(err => res.status(400).json(`Error: ${err}`))
});
結論
それは本当にそこにある.私はこのガイドは私が通常ポストより少し長くて、知っています、そして、確かに多くの情報があります、しかし、あなたがすでに他のスタックまたはフレームワークを使っているバックエンドAPIを造ることに慣れているならば、これはいくぶん身近に見えるはずです.
これは確かに非常に簡単な概要ですが、私はあなたが上で説明したパターンを使用する方法を見ることができることを確認することができますあなたがフロントエンド反応プロジェクトにデータを提供するために使用できるより意味のあるAPIにこれを展開することができます.何か新しいことを学びました!
あなたがこのポストが好きであるならば、他のどこかに私について来てください.Github , または.ハッピーコーディング!
Reference
この問題について(Express、Node、MongoDBを使用した基本APIの構築), 我々は、より多くの情報をここで見つけました
https://dev.to/kjdowns/building-a-basic-api-using-express-node-and-mongodb-160f
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// Require packages
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
// Configure dotenv
require('dotenv').config();
// Middleware
app.use(cors());
app.use(express.json());
// Connect to mongoDB server
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, {useNewUrlParser: true, useCreateIndex:true, useUnifiedTopology: true});
const connection = mongoose.connection;
connection.once('open', () => {
console.log("MongoDB database connection established successfully");
})
// Require and use Route files
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
// Server listen
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
})
私たちのモデルを作成するのは簡単です.MongoDBは、ドキュメントまたはNOSQLデータベースですので、例の各インスタンス
User
モデルはJSONに似たドキュメントとして保存されます.このモデルを作成するには、models
我々が作成するフォルダuser.model.js
ファイル.ここでは、データベースモデルのスキーマを作成します.これは比較的簡単ですので、以下のコードを投稿して説明します.const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
username: {
type: String,
required: true,
unique: true,
trim: true,
minlength: 3
}
}, {
timestamps: true
})
const User = mongoose.model('User', userSchema);
module.exports = User;
だからまず必要mongoose
そして、Schema
変数.次に、新しい変数を宣言しますuserSchema
どちらが新しいSchema
オブジェクトを渡します.このオブジェクトのキーは、我々が我々のモデルのために欲しいものであるでしょう.この場合、私たちはユーザーに物事をシンプルに保つためにユーザー名を持つことを望みます.各キーの値は、プロパティの検証を指定する別のオブジェクトになります.あなたは、我々が我々が欲しいとわかるのを見ることができます
username
活字があるString
, 必要とユニークで、余分な空白をトリムし、3の最小の長さを持つ.また、タイムスタンプを持っているモデルを指定する2番目のオブジェクトを渡します.MongoDBは自動的に我々のインデックスを追加します.最後に、変数をすべて詰め込み、それをエクスポートします.
路線
ホームストレッチ、我々はほとんどそこにある!我々がする必要がある最後のことは、APIのエンドポイントルートを作成することです.新規作成routes
フォルダを作成するusers.js
私たちの仕事のファイル.
const router = require('express').Router();
let User = require('../models/user.model');
我々が我々のファイルでする最初のことは、我々と同様に急行ルータを必要としますuser
モデルファイル.
router.route('/').get((req, res) => {
User.find()
.then(users => res.json(users))
.catch(err => res.status(400).json(`Error: ${err}`))
});
これは私たちのためのコードです/users/
サーバが受信するルートGET
リクエスト.この実装は、成功した場合やエラーコードとメッセージがない場合はすべてのユーザのリストを返します.簡単にこれを編集することができます任意の機能を使用するように.
ここでの基本パターンはroute
on router
と希望のルートで渡す.次に、どのような要求を処理するかをメソッドに連鎖させますGET
) そして、request
and response
引数として.これらはサーバによって受信されたリクエストに応答し、返送することができます応答.
私たちはfind()
メソッドUser
モデルは、データベース内のすべてのユーザーを検索します.これは、我々が扱う約束を返します.then()
and .catch()
. 成功した場合、我々は応答をJSONとして得たユーザのリストに設定します.そうでなければ、エラーコードとメッセージをリレーするために応答を設定します.
module.exports = router;
最後に我々は我々のサーバーファイルにルートを接続できるようにエクスポートします.私がファイルをセットアップするまで、私が言ったその部分は働きませんか?これです.
上記のルート宣言パターンを使用すると、別のリクエストタイプとルートに対してより多くのルートを簡単に含めることができます.これはAの例ですPOST
ユーザの追加要求は次のようになります.
router.route('/add').post((req, res) => {
const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.json('User added!'))
.catch(err => res.status(400).json(`Error: ${err}`))
});
結論
それは本当にそこにある.私はこのガイドは私が通常ポストより少し長くて、知っています、そして、確かに多くの情報があります、しかし、あなたがすでに他のスタックまたはフレームワークを使っているバックエンドAPIを造ることに慣れているならば、これはいくぶん身近に見えるはずです.
これは確かに非常に簡単な概要ですが、私はあなたが上で説明したパターンを使用する方法を見ることができることを確認することができますあなたがフロントエンド反応プロジェクトにデータを提供するために使用できるより意味のあるAPIにこれを展開することができます.何か新しいことを学びました!
あなたがこのポストが好きであるならば、他のどこかに私について来てください.Github , または.ハッピーコーディング!
Reference
この問題について(Express、Node、MongoDBを使用した基本APIの構築), 我々は、より多くの情報をここで見つけました
https://dev.to/kjdowns/building-a-basic-api-using-express-node-and-mongodb-160f
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const router = require('express').Router();
let User = require('../models/user.model');
router.route('/').get((req, res) => {
User.find()
.then(users => res.json(users))
.catch(err => res.status(400).json(`Error: ${err}`))
});
module.exports = router;
router.route('/add').post((req, res) => {
const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.json('User added!'))
.catch(err => res.status(400).json(`Error: ${err}`))
});
それは本当にそこにある.私はこのガイドは私が通常ポストより少し長くて、知っています、そして、確かに多くの情報があります、しかし、あなたがすでに他のスタックまたはフレームワークを使っているバックエンドAPIを造ることに慣れているならば、これはいくぶん身近に見えるはずです.
これは確かに非常に簡単な概要ですが、私はあなたが上で説明したパターンを使用する方法を見ることができることを確認することができますあなたがフロントエンド反応プロジェクトにデータを提供するために使用できるより意味のあるAPIにこれを展開することができます.何か新しいことを学びました!
あなたがこのポストが好きであるならば、他のどこかに私について来てください.Github , または.ハッピーコーディング!
Reference
この問題について(Express、Node、MongoDBを使用した基本APIの構築), 我々は、より多くの情報をここで見つけました https://dev.to/kjdowns/building-a-basic-api-using-express-node-and-mongodb-160fテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol