這個話題對我來說是一個非常有趣的話題。在許多Web應用程序中,接受用戶輸入並將單個記錄保存到數據庫非常普遍。但是,當您的用戶(或您)想在單個命令中執行多個插入片段時,在本文中,我們將演示如何創建CSV模板和表格來上傳CSV文件,以及如何將CSV解析到一個or Save Mongodb Database。與mongodb。如果您不這樣做,我建議閱讀我的
首先要撰寫Mongodb和Node.js文章的文章。本文介紹了Mongoose如何通過創建強大的模型來創建強大的模式來與MongoDB互動。如果您已經對Mongoose有很好的了解,那麼讓我們繼續進行。
入門開始,您將實例化一個新的node.js應用程序。在命令提示符中,導航到要託管node.js應用程序的位置並執行以下命令:使用
> flag
> flag意味著該項目在適當的位置初始化,因此該應用程序將以mkdir csvimport<br>cd csvimport<br>npm init -y<br>開始。在創建和解析CSV文件之前,我們需要先進行一些初始設置。我們希望將其作為Web應用程序;為此,您將使用Express軟件包處理所有Nitty-Gritty服務器設置。在您的命令提示符中,通過運行以下命令來安裝Express:
-y
>由於此Web應用程序將通過Web表單接受文件,因此我們還將使用Express Sub-Package Express文件上傳。讓我們現在也安裝它:
npm install express --save<br>>我們已經完成了足夠的初始配置來設置Web應用程序並創建一個基本的網頁,該網頁將在root Directory中創建一個文件上傳表單。
,創建一個
index.js.js.jsnpm install express-fileupload --save<br>文件,並添加以下代碼smippets。此文件設置了Web服務器。
>
這個文件導入Exprests Express和Express文件上傳庫,配置Web應用程序以使用文件上傳,並在端口8080上聽。它還使用Express使用Express創建了一個路由,該路由將是Web應用程序的默認著陸頁。此路由返回一個包含Web表單的文件,該文件將允許用戶上傳CSV文件。 >您可以通過在終端中運行命令來啟動Web服務器:
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>
您應該在端口
node index.js<br>服務器上啟動端口
808080 >>>。這意味著您已經成功地連接到Web服務器。 在根目錄中,創建
index.html文件。該文件創建了用於上傳CSV文件的表單。
>此html文件包含兩個重要的東西:- >
- >/模板>單擊時,將下載一個可以用要導入的信息填充的CSV模板。 >
-
encType
multipart/form-data
file
> 設置為multipart/form-data
>的表單和帶有類型的輸入字段的 ext> ext ext ext ext> ext>的csv模板。當表單包含文件上傳時,

>您會看到較早創建的表單。如果您閱讀了文章文章,則創建了作者模式。在本文中,您將重新創建此模式,並允許用戶大量將作者集合導入MongoDB數據庫。讓我們看一下作者模式。不過,在我們這樣做之前,您可能需要猜到了 - 我們需要安裝Mongoose軟件包:
mkdir csvimport<br>cd csvimport<br>npm init -y<br>>創建模型和模型
>>
>>>>>>>>>>>>>>>npm install express --save<br>
> >>>>>>>>>>>>>
>npm install express-fileupload --save<br>可以通過單擊模板鏈接下載的CSV模板。為了輔助CSV模板生成,我們將使用
JSON2CSV軟件包。此NPM軟件包將JSON帶有列標題和正確的行末端轉換為CSV。您將為模板路由的此新代碼附加到先前創建的index.js 文件:
>該代碼所做的第一件事是包含一個新的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>template.js
file(下一個下一步創建),並為get
,您創建了要在CSV模板中包含的字段數組。這可以通過兩種方式之一來完成。第一種方法(在本教程中完成)是創建要包含在模板中的字段的靜態列表。第二種方法是通過從作者架構中提取屬性來動態創建字段列表。
mkdir csvimport<br>cd csvimport<br>npm init -y<br>>
>使用動態方法是一個好主意,但是當您不想在CSV模板上包含多個屬性時,它會變得有些複雜。在這種情況下,我們的CSV模板不包括_id
和created
>屬性,因為這些屬性將通過代碼填充。但是,如果您沒有要排除的字段,那麼動態方法也將起作用。
>使用定義的字段數組創建CSV Template
,您將使用>軟件包從JavaScript對象創建CSV模板。此json2csv
對象將是此路線的結果。 csv
authors.csvres
file。您的Web瀏覽器,Web表單將顯示使用鏈接以下載模板。單擊鏈接以下載模板將允許您下載authors.csv 文件。該文件將在上傳之前填充。
在Microsoft Excel中打開模板文件,CSV文件應以此為基礎:
>這是填充的CSV文件的一個示例:
npm install express --save<br>
index.js
文件需要一些更新才能連接到mongoDB並創建一個新的帖子路由,該路由將使用數據庫連接和配置的新的帖子路由接受文件上傳:npm install express-fileupload --save<br>
fast-csv
,是時候分析CSV文件了。幸運的是,有幾個很棒的圖書館可以幫助完成這項工作。對於本教程,我們將使用可以使用以下命令安裝的
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>
post
>創建了與模板路由相似的郵路路由,該模板路由從upload.js
>函數。不必將這些函數放在單獨的文件中;但是,最好為這些路由創建單獨的文件,因為它有助於保持代碼良好和有條理。前三行包括解析並保存CSV數據所需的必要軟件包。
接下來,定義和導出了post
index.jsfile的函數。在此功能內部是魔術發生的地方。
該功能首先檢查請求主體中包含一個文件。如果沒有,則返回錯誤,指示必須上傳文件。
>上傳文件後,對文件的引用保存到稱為authorFile
>的變量。這是通過訪問數組中的files
陣列和file
屬性匹配我的文件輸入名稱的名稱,該名稱在file
index.html> example中首先定義。該數組將用於將數據保存到數據庫中。此功能將CSV文件作為字符串接受。該字符串是從屬性中提取的。
authors
>下一行包含兩個
>> andfast-csv
>。這些都設置為fromString
。這告訴庫,CSV文件的第一行將包含標題,並且應忽略空行。 authorFile.data
>data
>使用配置的選項,我們設置了兩個偵聽器函數,這些函數在
事件。此事件包含解析數據的JavaScript對象。 fast-csv
headers
>該對像已更新以包含作者架構的ignoreEmpty
屬性,並具有新的true
>。然後將此對象添加到
>函數,將data
>的數組傳遞給它。 end
>data
如果發生錯誤試圖保存數組,則會拋出異常。否則,向用戶顯示了一條成功消息,指示已上傳並保存到數據庫中。
>數據庫架構應與此相似:_id
ObjectId
authors
>
這可以通過多種方式完成。如果要實現它,我建議更新data
回調功能以檢查作者數組的長度。當數組超過您定義的長度時,例如100,在數組上調用Author.create
>函數,然後將數組重置為空。然後將記錄保存在100的塊中。請務必將最終的create
呼叫留在end
回調功能中,以保存最終記錄。
享受!
>
已通過Mary Okosun的貢獻進行了更新。 Mary是位於尼日利亞拉各斯的軟件開發人員,在Node.js,JavaScript,MySQL和NoSQL Technologies中具有專業知識。
以上是批量使用Node.js將CSV文件導入MongoDB的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver Mac版
視覺化網頁開發工具

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3漢化版
中文版,非常好用