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

Node.jsを使用してデータを作成、読み取り、更新、削除します-Mongoose

    この記事では、ストアがあり、 CRUD を使用するために、そのストアをデータベースに保存します。 処理する。
    私のコードのソースが必要な場合は、私の GitHubを自由に確認してください。 ここにリンク

    最初に、次のコードを使用して、ターミナルを備えたアプリケーションにマングースパッケージをインストールする必要があります:

    npm install mongoose

    次に、Expressを介してサーバーを実行し、モデルのファイルを作成して、次のようにコマンドを記述します。

    const mongoose = require('mongoose');
    const Schema = mongoose.Schema;
    
    const productSchema = new Schema({
      title: {
        type: String,
        required: true
      },
      price: {
        type: Number,
        required: true
      },
      description: {
        type: String,
        required: true
      },
      imageUrl: {
        type: String,
        required: true
      }
    });
    
    module.exports = mongoose.model('Product',productSchema);
    
    

    その後、コントローラーのファイルに、CRUDのコードを段階的に記述します。 template-engine EJSを使用することで言及する価値があります フロントエンドセクションへのアクセスを見つけ、URLをインポートして読み取るために必要なデータを交換します。
    コントローラファイルの先頭で、製品に事前定義されたモデルが必要です。 すべての機能でデータベースと通信できるようにする変数。モデルを含む変数の大文字化はWeb開発者の間で一般的ですが、必須ではないことに注意してください。

    作成:

    データベースにデータを保存するには、まず、受信したデータを変数に保存する必要があります。次に、productDataという名前の変数を定義し、 newを使用します。 コマンド受信したデータをモデル(製品)にインポートします。その後、 Async/Awaitを使用します データを保存するための保存コマンドを作成することを約束します。

    exports.postAddProduct = async (req, res, next) => {
      const title = req.body.title;
      const imageUrl = req.body.imageUrl;
      const price = req.body.price;
      const description = req.body.description;
      const productData = new Product({
        title: title,
        price: price,
        description: description,
        imageUrl: imageUrl
      });
      try {
        const result = await productData.save();
        res.redirect("/admin/products");
      } catch (err){
        console.log(err);
      }
    };
    

    モデルにデータを保存する場合、最初の変数は最初のステップでモデルに作成したフィールド名であり、2番目の変数は両方の変数が同じ名前の場合に受信したデータであり、変数の名前を次のように記述できます。以下のように1回:

    const productData = new Product({
        title,
        price,
        description,
        imageUrl
      });
    

    読む:

    データベースからデータを取得するには、 findを使用できます。 以下のようにモデルの変数に対するコマンド:

    exports.getAdminProducts = async (req, res, next) => {
    
      try {
        const products = await Product.find()
    
        res.render("admin/products", {
          pageTitle: "Admin Products",
          products: products,
          path: "/admin/products",
        });
      } catch (err) {
        console.log(err);
      }
    };
    

    データベースから特殊なフィールドを読み取るには、 select()を使用できます。 データをフェッチするコマンド。以下の例のように、各製品の名前と価格のみを読みました。

    Const products = await Product.find.select(‘title price’)
    

    更新:

    更新するには、最初に作成と同様に、データを変数に入れ、次に、更新する製品を示す受信したIDを使用して、データベースを検索し、更新操作を実行します。このステップでは、 findByIdAndUpdate()を使用します コマンド。最初に受信したIDを入力し、次に更新するデータ全体を書き込みます。

    exports.postEditProduct = async (req, res, next) => {
      const productId = req.body.productId;
      const updatedTitle = req.body.title;
      const updatedPrice = req.body.price;
      const updatedImageUrl = req.body.imageUrl;
      const updatedDesc = req.body.description;
    
      try {
        await Product.findByIdAndUpdate(productId, {
          title: updatedTitle,
          price: updatedPrice,
          description: updatedDesc,
          imageUrl: updatedImageUrl
        });
        res.redirect("/admin/products");
      } catch (err) {
        console.log(err)
      }
    };
    

    削除:

    このセクションでは、最初に受信したIDを productIdに入れます 変数、次に findByIdAnRemove() 製品を見つけて削除するコマンド。

    exports.postDeleteProduct = async (req, res, next) => {
      const productId = req.body.productId;
      try {
        await Product.findByIdAndRemove(productId);
        res.redirect("/admin/products");
      } catch (err) {
        console.log(err)
      }  
    };
    

    この記事では、 CRUDについて説明しました。 NodeJSを使用した操作 およびMongoDB エントリデータの検証などの詳細には触れません。
    この記事がお役に立てば幸いです。ご不明な点がございましたら、お気軽にご連絡ください。

    心から、
    Sasan Dehghanian


    1. マングースとユニークなフィールド

    2. MongoDBでインデックスを作成することの危険性

    3. オープンスタンダードの作成:ApacheAtlasを使用した機械学習ガバナンス

    4. summongodbでグループ化