sql >> データベース >  >> NoSQL >> MongoDB

expressjsを使用してmongoDBにデータを保存するにはどうすればよいですか?

    マングース MongoDBとの対話を容易にするフレームワークです。実際、基本的に、検証、キャスト、ロジックの定型文をすべて自分でやりたいとは思わないので、なぜ車輪の再発明を行うのですか。
    そして、初心者なので、フレームワークを恐れないでください。バックエンドとフロントエンドの多くの領域で、生活を楽にするための便利なフレームワークがたくさんあります。

    あなたが共有した記事は自明ですが、データベースの部分のみを要約します あなたのために(私はあなたのコードに深く入り込むことはありません、ロバの仕事はありません。残りはあなた次第です):

    1) まず、マングースをインストールします。

    npm install mongoose

    記事には--saveがあります 「npm install」のように、これを追加する必要はありません。 指定したパッケージをデフォルトで依存関係に保存します。"(ref。 )

    2) マングースにアクセスして使用できるようにする 、ノード方式でインポートする必要があります。つまり、require()

    const express = require(‘express’)
    const mongoose = require(“mongoose”);
    const bodyParser = require(‘body-parser’);  
    
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true })); 
    
    

    そして、 body-parser とは何ですか?
    データベースをエクスプレスで処理する場合、遅かれ早かれこれ
    そして、結局1つ必要な理由は、この回答> 。
    また、最近のバージョンのExpressには独自のボディパーサーがあるため、app.use(express.json())を使用できます。 app.use(bodyParser.json())の代わりに 。
    重要: body-parserはルートの前にある必要があります。

    3) mongoose.connect(url)を使用します 。

    url 引数は、 MongoDB Atlasにあるものです。 。 :

    場所:[クラスター]タブ->[接続]->[アプリケーションの接続]->[ドライバーnode.js]

    これはあなたに次のようなものを与えます:

    mongodb+srv://<user>:<password>@,cluster>.mongodb.net/test?retryWrites=true&w=majority
    

    重要: 自分のユーザーとパスワードではなく、[データベースアクセス]タブで作成したユーザーのユーザーとパスワードを使用します。

    機密性の高い変更可能なデータを保護するために、環境変数を設定できます。しかし、私はconfig.jsを使用することを好みます 簡単にするために、これは通常アプリのルートにあります。

    それらを保護できるだけでなく(.gitignoreを使用する場合など) )だけでなく、ある環境から別の環境に変化する可能性のある変数があるため、アプリ全体で変化するものを探すのではなく、1つの場所で利用でき、簡単に見つけることができるため、簡単に変更できます。

    .envの場合 ファイルアプローチ、この記事

    重要: コードをgithubまたはオンラインのどこかに配置したい場合は、config.jsを使用する理由の1つです。 、このファイルを.gitignoreに追加することを忘れないでください このような機密データが漏洩してオンラインで他の人に公開されるのを防ぐためです。

    config.jsで あなたはそうすることができます:

    exports.username = 'your user';
    exports.pass = 'your pass';
    exports.myCluster = 'your cluster's name';
    

    次に、それらをインポートします:

    const { username, pass, myCluster } = require('./config'); <-パスはあなたにとって異なるかもしれません!

    ヒント: バックティックを使用できます(` `const urlの変数を簡単に挿入します 、補間

    つまり:

    const url = `mongodb+srv://${username}:${password},${myCluster}.mongodb.net/test?retryWrites=true&w=majority`
    

    重要: 必ずホワイトリストを作成してください あなたのIP MongoDB側(アトラス)から、そうでない場合は接続エラーが発生します。セキュリティネットワークアクセス ->IPホワイトリスト
    0.0.0.0/0を使用できます すべてのIPをホワイトリストに登録します。
    また、 VPNを使用する場合 、IPも変更されます。

    4)最後になりましたが重要です 、データベースに接続した後、スキーマを定義する必要があります :

    const moviesSchema = new mongoose.Schema({
    title: String,
    year: Number,
    rating: Number
    });
    

    そして

    const Movies = mongoose.model(“Movies”, moviesSchema);

    ヒント: 多くの初心者が犯すよくある間違いは、newの使用を忘れたことです。 :
    new mongoose.Schema({...})

    別のファイルでモデルを作成する場合(これがベストプラクティスです)、const Moviesを変更する必要があります。 だから:

    module.exports = mongoose.model(“Movies”, moviesSchema);

    const mongoose = require('mongoose');を追加することを忘れないでください その別のjsモデルファイルで。

    そして、このモデルを使用したい場所では、次のようにインポートします。

    const Movies= require('../models/movies'); (パスはアプリによって異なる場合があります)

    残りは、私の友人、あなた次第です。データベースで何をしたいのか、そしてそれをどのように使うのか。

    他の人への注意:私はこれを書いている間、これに多くの時間と心を注ぎました。何か間違っていることがわかった場合、または何かを追加できると思われる場合は、遠慮なく編集して私の答えを改善してください。



    1. MongoDBで「NotLike」演算子を使用するにはどうすればよいですか?

    2. MongoDBmongorestoreとレコード付きの既存のコレクション

    3. MongoDBのドキュメントを更新する

    4. Mongo-PHP-MongoDBPHPドライバーv1.6でのMongoCursor例外