検索
ホームページウェブフロントエンド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エンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

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