ホームページ > ウェブフロントエンド > jsチュートリアル > node.jsを使用してmongooseを使用して、csvファイルをmongodbにバルクインポート

node.jsを使用してmongooseを使用して、csvファイルをmongodbにバルクインポート

Jennifer Aniston
リリース: 2025-03-10 00:09:10
オリジナル
237 人が閲覧しました

このトピックは私にとって本当に楽しいものです。多くのWebアプリケーションでは、ユーザー入力を受け入れ、データベースに単一のレコードを保存することが非常に一般的です。しかし、ユーザー(またはあなたが)が単一のコマンドで複数の挿入を実行したい場合はどうですか?

この記事では、CSVテンプレートとフォームを作成してCSVファイルをアップロードする方法を示します。 mongodbで。そうでない場合は、Mongodbとnode.js

記事のMongooseの紹介を最初に読むことをお勧めします。この記事では、Mongooseがモデルが作成された強力なスキーマを作成することにより、MongoDBとどのように相互作用するかについて説明します。既にマングースをよく理解している場合は、続行しましょう。

フラグを使用して、プロジェクトがデフォルト値を所定の位置に初期化することを意味します。 CSVファイルを作成および解析する前に、最初に最初のセットアップを実行する必要があります。これをWebアプリケーションにしたいと考えています。そのためには、Expressパッケージを使用して、すべてのNitty-Grittyサーバーのセットアップを処理します。コマンドプロンプトでは、次のコマンドを実行してExpressをインストールします。

このWebアプリケーションはWebフォームを介してファイルを受け入れるため、ExpressサブパッケージExpressファイルアップロードも使用します。今すぐインストールしましょう。

mkdir csvimport<br>cd csvimport<br>npm init -y<br>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Webアプリケーションを設定し、ファイルアップロードフォームを作成する基本的なWebページを作成するのに十分な初期構成を実行しました。このファイルは、Webサーバーをセットアップします。 -y このファイルはExpressとExpressファイルアップロードライブラリをインポートし、Webアプリケーションを設定してファイルアップロードを使用し、ポート8080に耳を傾けます。これは、Webアプリケーションのデフォルトのランディングページである「/」でExpressを使用してルートを作成します。このルートは、ユーザーがCSVファイルをアップロードできるようにするWebフォームを含む

index.html
npm install express --save<br>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ファイルを返します。

端末でコマンドを実行してWebサーバーを起動することができます。これは、Webサーバーに正常に接続したことを意味します。npm install express-fileupload --save<br>ファイルを作成します。このファイルは、csvファイルをアップロードするためのフォームを作成します。

このhtmlファイルには2つの重要なことが含まれています。

  1. /テンプレートへのリンクは、クリックすると、インポートする情報を入力できるCSVテンプレートをダウンロードします。
  2. は、フォームにファイルのアップロードが含まれている場合、HTMLで使用されるエンコードの方法です。 
  3. encTypemultipart/form-datafile http:// localhost:8080/にアクセスすると、以前に作成されたフォームが表示されます。 Mongoose 記事の紹介を読むと、著者スキーマが作成されました。この記事では、このスキーマを再作成し、ユーザーが著者のコレクションをMongoDBデータベースに大量にインポートできるようにします。著者スキーマを見てみましょう。しかし、それを行う前に、おそらくあなたはそれを推測する前に、マングースパッケージをインストールする必要があります:multipart/form-data

マングースインストールされたスキーマとモデルの作成>著者

author.> jsnode.jsを使用してmongooseを使用して、csvファイルをmongodbにバルクインポートファイルを作成しましょう。テンプレートリンクをクリックしてダウンロードできるCSVテンプレートの作成時。 CSVテンプレートの生成を支援するために、

json2csv パッケージを使用します。このNPMパッケージは、JSONを列のタイトルと適切なラインエンディングでCSVに変換します。

mkdir csvimport<br>cd csvimport<br>npm init -y<br>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
以前に作成された

index.js

ファイルを更新して、

/テンプレートの新しいルートを含めるようにします。この新しいコードは、このコードが最初に作成したJS

ファイルに以前に作成された
npm install express --save<br>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
index.js

ファイルに追加されます。このコードは、新しいtemplate.jsファイル(次に作成される)を含み、

/Template
npm install express-fileupload --save<br>
ログイン後にコピー
のルートを作成します。このルートは、新しいルートを含むように更新されたExpress Serverを使用してファイルで> template.jsファイルで関数を呼び出します。新しいtemplate.jsファイルを作成しましょう。次に、A 関数を作成してエクスポートします。この関数は、Expressサーバーからのリクエストと応答オブジェクトを受け入れます。関数内で、CSVテンプレートに含めるフィールドの配列を作成します。これは、2つの方法のいずれかで実行できます。最初の方法(このチュートリアルで行われている)は、テンプレートに含まれるフィールドの静的リストを作成することです。 2番目の方法は、著者スキーマからプロパティを抽出することにより、フィールドのリストを動的に作成することです。
var app = require('express')();<br>var fileUpload = require('express-fileupload');<br>var server = require('http').Server(app);<br> <br>app.use(fileUpload());<br><br>app.get('/', function (req, res) {<br>  res.sendFile(__dirname + '/index.html');<br>});<br>server.listen(8080, () => {<br>  console.log('Server started on port 8080')<br>})<br>
ログイン後にコピー

2番目の方法は、次のコードを使用することです。

mkdir csvimport<br>cd csvimport<br>npm init -y<br>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

動的な方法を使用するのはいい考えでしたが、スキーマからCSVテンプレートに複数のプロパティを含めたくない場合は、少し複雑になります。この場合、CSVテンプレートには_idおよびcreatedプロパティが含まれていません。これらはコードを介して入力されるためです。ただし、除外したいフィールドがない場合は、動的メソッドも同様に機能します。

定義されたフィールドの配列を使用してCSVテンプレート

を作成すると、JavaScriptオブジェクトからCSVテンプレートを作成します。これはこのルートの結果になります。json2csvcsv。最後に、Expressサーバーからの

プロパティを使用して、2つのヘッダープロパティが設定されます。 Webブラウザでは、テンプレートをダウンロードするためのリンクが付いたWebフォームが表示されます。リンクをクリックしてテンプレートをダウンロードすると、

authors.csvresファイルをダウンロードできます。このファイルは、アップロードされる前に入力されます。Microsoft Excelでテンプレートファイルを開くと、CSVファイルが入力する必要があります。 写真。この例の肉とジャガイモに到達し、そのCSVファイルを解析しましょう。

index.js

ファイルには、MongoDBに接続し、ファイルのアップロードを受け入れる新しいポストルートを作成するための更新が必要です:>データベース接続と新しいPostルートを構成すると、CSVファイルを解析する時が来ました。幸いなことに、この仕事を支援するいくつかの優れたライブラリがあります。このチュートリアルでは、次のコマンドとともにインストールできる

パッケージを使用します。

node.jsを使用してmongooseを使用して、csvファイルをmongodbにバルクインポートPOSTルートは、

upload.js

ファイルからa
npm install express --save<br>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
関数を呼び出すテンプレートルートと同様に作成されました。これらの機能を別々のファイルに配置する必要はありません。ただし、これらのルートの個別のファイルを作成するのが最善です。コードを優しく整理して整理するのに役立つためです。

データの送信

。最初の3行には、CSVデータを解析して保存するために必要な必要なパッケージが含まれています。次に、 index.js

ファイルで使用するためにpost関数が定義およびエクスポートされます。この関数の内部は、魔法が行われる場所です。関数は、最初にリクエスト本体に含まれるファイルがあることをチェックします。ない場合、ファイルをアップロードする必要があることを示すエラーが返されます。

ファイルがアップロードされたら、ファイルへの参照が

と呼ばれる変数に保存されます。これは、アレイ内の

配列とauthorFileプロパティにアクセスすることによって行われます。 filesプロパティは、file index.htmlfile例で最初に定義されたファイル入力名の名前と一致します。このアレイは、データをデータベースに保存するために使用されます。

ライブラリは、

関数を活用することにより呼び出されます。この関数は、CSVファイルを文字列として受け入れます。文字列はauthorsプロパティから抽出されます。

プロパティには、アップロードされたCSVファイルのコンテンツが含まれています。

fast-csv次の行には、fromString関数の2つのオプションが含まれています。これらはどちらもauthorFile.dataに設定されています。これは、CSVファイルの最初の行にヘッダーが含まれ、空の行が無視されることをライブラリに伝えています。data

オプションを構成した場合、

イベントとfast-csvイベントがトリガーされたときに呼び出される2つのリスナー関数を設定します。 headersイベントは、CSVファイルのすべての行に対して1回呼び出されます。このイベントには、解析されたデータのJavaScriptオブジェクトが含まれています。ignoreEmptytrueオブジェクトは更新され、著者スキーマのプロパティが新しい

を含む。次に、このオブジェクトは

配列に追加されます。dataendCSVファイルが完全に解析されたら、dataイベントがトリガーされます。イベントコールバック関数の内部では、著者モデルの

関数を呼び出して、

>の配列をそれに渡します。_idObjectIdアレイを保存しようとするエラーが発生した場合、例外がスローされます。それ以外の場合は、ユーザーに成功メッセージが表示され、データベースにアップロードされて保存された著者の数を示します。authors

データベーススキーマはこれに似ている必要があります。

endこれはいくつかの方法で行うことができます。私がそれを実装する場合は、dataコールバック関数を更新して、著者アレイの長さを確認することをお勧めします。配列が定義された長さを超える場合、例えば100、アレイのAuthor.create関数を呼び出してから、配列を空にリセットします。これにより、レコードは100のチャンクに保存されます。最終記録を保存するためにcreateendコールバック関数にファイナル

コールを残してください。メアリーは、ナイジェリアのラゴスに拠点を置くソフトウェア開発者であり、node.js、javascript、mysql、およびnosqlテクノロジーの専門知識を持っています。

以上がnode.jsを使用してmongooseを使用して、csvファイルをmongodbにバルクインポートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート