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

このトピックは私にとって本当に楽しいものです。多くの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 までご連絡ください。
JavaScriptコメント://および / * *を使用するためのガイドJavaScriptコメント://および / * *を使用するためのガイドMay 13, 2025 pm 03:49 PM

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

Python vs. JavaScript:開発者の比較分析Python vs. JavaScript:開発者の比較分析May 09, 2025 am 12:22 AM

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

Python vs. JavaScript:ジョブに適したツールを選択するPython vs. JavaScript:ジョブに適したツールを選択するMay 08, 2025 am 12:10 AM

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScript:それぞれの強みを理解するPythonとJavaScript:それぞれの強みを理解するMay 06, 2025 am 12:15 AM

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

JavaScriptのコア:CまたはCの上に構築されていますか?JavaScriptのコア:CまたはCの上に構築されていますか?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptアプリケーション:フロントエンドからバックエンドまでJavaScriptアプリケーション:フロントエンドからバックエンドまでMay 04, 2025 am 12:12 AM

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

Python vs. Javascript:どの言語を学ぶべきですか?Python vs. Javascript:どの言語を学ぶべきですか?May 03, 2025 am 12:10 AM

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワーク:最新のWeb開発のパワーJavaScriptフレームワーク:最新のWeb開発のパワーMay 02, 2025 am 12:04 AM

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい