如何使用?Node.js?將?MongoDB?連接到您的應(yīng)用程序
使用 Node.js 將 MongoDB 連接到您的應(yīng)用程序
MongoDB 是一個(gè)開源的 NoSQL 數(shù)據(jù)庫(kù)管理程序。 NoSQL 數(shù)據(jù)庫(kù)對(duì)于處理大量分布式數(shù)據(jù)非常有用。我們可以在這個(gè)數(shù)據(jù)庫(kù)中存儲(chǔ)信息,對(duì)其進(jìn)行管理,然后檢索它并將其顯示給查看我們應(yīng)用程序的人。
現(xiàn)在,要從 Node.js 服務(wù)器連接到 Mongo 數(shù)據(jù)庫(kù),您可以使用:
- Mongo,官方驅(qū)動(dòng)npm包
- Mongoose,nodejs 中 mongo 的優(yōu)雅對(duì)象建模工具
大多數(shù)在線教程都教如何使用 mongoose 在 MongoDB 中設(shè)置 Node/Express 應(yīng)用程序,這對(duì)初學(xué)者沒有太大幫助。
在本教程中,我將向您介紹設(shè)置 MongoDB 帳戶、生成連接字符串以及在不使用 mongoose 的情況下將 MongoDB 數(shù)據(jù)庫(kù)連接到應(yīng)用程序的基礎(chǔ)知識(shí)。
如果您喜歡觀看視頻,請(qǐng)查看教程 這里 .
讓我們開始吧!
第 1 步。創(chuàng)建一個(gè)帳戶
前往 MongoDB Atlas 的 網(wǎng)站 并使用您的電子郵件注冊(cè)。

您可能需要回答一個(gè)簡(jiǎn)短的問卷來(lái)創(chuàng)建您的帳戶。
步驟 2. 部署您的第一個(gè)集群
概括地說(shuō),集群是存儲(chǔ)數(shù)據(jù)庫(kù)副本的一組節(jié)點(diǎn)。
單擊構(gòu)建數(shù)據(jù)庫(kù),然后選擇共享數(shù)據(jù)庫(kù)類型(免費(fèi)的?。?。

它將為您提供自定義集群的選項(xiàng),但您可以使用默認(rèn)值。只需確保您仍處于免費(fèi)套餐中。之后,單擊創(chuàng)建集群。
步驟 3. 創(chuàng)建用戶名和密碼
在后臺(tái)創(chuàng)建集群時(shí),您必須創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)用戶。用戶名和密碼與您用于登錄 MongoDB Atlas 的用戶名和密碼不同;它們將僅用于此特定數(shù)據(jù)庫(kù)(它有助于保持?jǐn)?shù)據(jù)安全并有助于控制誰(shuí)可以訪問哪些數(shù)據(jù))。
確保安全地存儲(chǔ)您的密碼,因?yàn)槲覀冃枰鼇?lái)連接數(shù)據(jù)庫(kù)。

第 4 步。添加您的 IP 地址
在連接到集群之前,您需要將您的 IP 地址列入白名單。這是 MongoDB Atlas 中內(nèi)置的安全功能。繼續(xù)并單擊添加您的當(dāng)前 IP 地址。

之后,只需單擊完成并關(guān)閉,當(dāng)對(duì)話框打開時(shí),單擊轉(zhuǎn)到數(shù)據(jù)庫(kù)。
第5步.首頁(yè)
歡迎訪問您的數(shù)據(jù)庫(kù)主頁(yè);你應(yīng)該在那里看到你的集群。在將其連接到您的應(yīng)用程序之前,您必須在其中創(chuàng)建一個(gè)集合。

第 6 步:創(chuàng)建集合
單擊瀏覽集合,然后添加我自己的數(shù)據(jù)

鍵入數(shù)據(jù)庫(kù)的名稱和集合名稱。在我的例子中,我的數(shù)據(jù)庫(kù)名稱是“to-do-app”,集合名稱是“tasks”。單擊創(chuàng)建。
太好了,您已經(jīng)創(chuàng)建了一個(gè)集合,您的所有對(duì)象都將保存在其中。

步驟 7. 生成連接字符串
返回到您的數(shù)據(jù)庫(kù)主頁(yè)(左上角,在 DEPLOYMENT 下),然后在集群的主頁(yè)上,單擊 Connect。您將獲得三種連接數(shù)據(jù)庫(kù)的方法。
選擇“連接您的應(yīng)用程序”方法。

提供的連接字符串將用于您的應(yīng)用程序(因此您的應(yīng)用程序可以連接和操作數(shù)據(jù)庫(kù))。

步驟 8. 初始化您的項(xiàng)目
現(xiàn)在轉(zhuǎn)到您的 IDE(我使用 VS Code)并啟動(dòng)您的應(yīng)用程序。
如果這是您第一次開發(fā)全棧 Web 應(yīng)用程序,您需要將 Node.js 下載到您的計(jì)算機(jī)上。
您可以從 官方節(jié)點(diǎn)網(wǎng)站 ,它還將安裝 npm(節(jié)點(diǎn)包管理器)。
npm 是 Node.js 的包管理器,擁有數(shù)十萬(wàn)個(gè)包。盡管它確實(shí)創(chuàng)建了一些目錄結(jié)構(gòu)/組織,但這不是主要目的。
它的主要目標(biāo)是自動(dòng)化依賴和包管理。這意味著您可以在 package.json 文件中指定項(xiàng)目的所有依賴項(xiàng)。任何時(shí)候您(或其他任何人)需要開始您的項(xiàng)目時(shí),他們只需運(yùn)行 npm install 并立即安裝所有依賴項(xiàng)。除此之外,還可以指定您的項(xiàng)目所依賴的版本,以防止更新破壞您的項(xiàng)目。
要使用 npm 初始化您的第一個(gè)項(xiàng)目,請(qǐng)創(chuàng)建一個(gè)項(xiàng)目文件夾,并將目錄更改為您的項(xiàng)目文件夾。
完成后,您就可以使用以下命令初始化您的第一個(gè)項(xiàng)目:
npm init ## 觸發(fā)項(xiàng)目的初始化
步驟 9. 安裝本地包
使用 npm 安裝任何軟件包后,該軟件包將作為依賴項(xiàng)安裝在您的 package.json 文件中的應(yīng)用程序中,并且其模塊存儲(chǔ)在 node_modules 文件夾中。
npm 安裝 是安裝您選擇的包的標(biāo)準(zhǔn) NPM 命令。
npm 安裝<package name>
現(xiàn)在讓我們安裝我們將用于這個(gè)項(xiàng)目的包。
表達(dá):
npm 安裝快遞
MongoDB:
npm 安裝 mongodb
多特納夫:
npm 安裝 dotenv
dotenv 包存儲(chǔ)了我們不想共享的敏感信息。它創(chuàng)建環(huán)境變量并將它們隱藏在我們的主代碼中,例如,您可以保護(hù) env 文件中的私鑰,并在將其推送到 GitHub 時(shí)將其隱藏。
您可以檢查所有內(nèi)容是否已成功安裝在您的 package-lock.json 上(在 packages 下)。

步驟 10. 需要依賴項(xiàng)
安裝包后,新建一個(gè) 服務(wù)器.js 文件并使用您的代碼編輯器打開它。然后,添加以下代碼行:
const express = require('express') #1
const app = express() #2
const MongoClient = require('mongodb').MongoClient. #3代碼說(shuō)明:
- 在您的第一行代碼中,您使用 require 函數(shù)來(lái)包含“express 模塊”。
- 在使用 express 模塊之前,您需要為它創(chuàng)建一個(gè)對(duì)象。
- MongoDB 模塊導(dǎo)出 MongoClient,您將使用它連接到 MongoDB 數(shù)據(jù)庫(kù)。您可以使用 MongoClient 的實(shí)例連接到集群、訪問數(shù)據(jù)庫(kù)并關(guān)閉與該集群的連接。
步驟 11. 連接數(shù)據(jù)庫(kù)
您必須為 MongoDB 給出的字符串聲明一個(gè)變量。重要提示:將 替換為您之前創(chuàng)建的實(shí)際密碼。
const connectionString = 'mongodb+srv://juliafm:<password> @cluster0.qvesujr.mongodb.net/?retryWrites=true&w=majority'
要完成與外部數(shù)據(jù)庫(kù)的連接,請(qǐng)?zhí)砑右韵麓a行:
MongoClient.connect(connectionString)
.then(客戶端 => {
console.log(`連接到數(shù)據(jù)庫(kù)`)
const db = client.db('to-do-app')
const tasksCollection = db.collection('tasks')
}) //CRUD 請(qǐng)求 .catch(錯(cuò)誤 => 控制臺(tái).錯(cuò)誤(錯(cuò)誤))代碼說(shuō)明:
- 創(chuàng)建一個(gè)帶有承諾的函數(shù)
- 告訴(然后)客戶下一步該做什么
- 將其作為參數(shù)傳遞給箭頭函數(shù)
- 創(chuàng)建一個(gè) console.log 語(yǔ)句以確保您已連接
- 指定您要連接的數(shù)據(jù)庫(kù)和集合
- 添加一個(gè) catch 語(yǔ)句,看看我們是否得到任何錯(cuò)誤
太棒了,你都準(zhǔn)備好了。如果您現(xiàn)在運(yùn)行服務(wù)器,您應(yīng)該會(huì)在終端上看到“已連接到數(shù)據(jù)庫(kù)”。
這是你到目前為止的代碼:
常量表達(dá) = 要求('表達(dá)')
常量應(yīng)用程序 = 快遞()
const MongoClient = require('mongodb').MongoClient
const connectionString = 'mongodb+srv://juliafm:[[email protected]](/cdn-cgi/l/email-protection)/?retryWrites=true&w=majority' MongoClient.connect(connectionString)
.then(客戶端 => {
console.log('連接到數(shù)據(jù)庫(kù)')
const db = client.db('to-do-app')
const taskCollection = db.collection('tasks') //CRUD 請(qǐng)求
})
.catch(錯(cuò)誤=> console.error(錯(cuò)誤))步驟 12. 設(shè)置 .env
出于安全原因,我想向您展示如何將 MongoDB 連接字符串移動(dòng)到 .env 文件。
為此,您必須在項(xiàng)目文件夾中創(chuàng)建一個(gè) .env 文件。在此文件中,創(chuàng)建一個(gè)變量 DB_STRING 并粘貼您的連接字符串(不要忘記將占位符更改為您的實(shí)際密碼)。

返回到您的 server.js 文件,刪除保存連接字符串的變量,然后添加它:
需要('dotenv').config() 常量 connectionString = process.env.DB_STRING;

最后,創(chuàng)建一個(gè) .gitignore 文件并在那里添加 .env (你會(huì)看到我已經(jīng)添加了 node_modules,因?yàn)樗鼈兲亓?,沒有必要將它們推送到 Github)。
.gitignore 文件指定了 Git 應(yīng)該忽略的故意未跟蹤的文件。

請(qǐng)記住,如果您要推送到 Heroku,則必須從 .gitignore 文件中刪除 .env ,因?yàn)樗枰L問數(shù)據(jù)庫(kù)?;蛘?,您可以通過 Heroku 儀表板中應(yīng)用程序的“設(shè)置”選項(xiàng)卡添加此配置變量。
結(jié)論
我希望本教程對(duì)您有所幫助。如果您還有任何問題,請(qǐng)告訴我;我總是很樂意提供幫助!
如果您喜歡這個(gè)出版物,請(qǐng)?jiān)?Medium 上關(guān)注我以獲取我的最新文章。
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明
本文鏈接:https://www.qanswer.top/33100/15141308
到此這篇關(guān)于使用 Node.js 將 MongoDB 連接到您的應(yīng)用程序的文章就介紹到這了,更多相關(guān)Node.js連接MongoDB內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nodejs和npm版本不匹配報(bào)錯(cuò)的解決方法
當(dāng)公司要求使用固定nodejs的版本時(shí),自己不小心更新了npm,就會(huì)導(dǎo)致npm和nodejs不匹配,下面這篇文章主要給大家介紹了關(guān)于nodejs和npm版本不匹配報(bào)錯(cuò)的解決方法,需要的朋友可以參考下2023-04-04
Dapr+NestJs編寫Pub及Sub裝飾器實(shí)戰(zhàn)示例
這篇文章主要為大家介紹了Dapr+NestJs編寫Pub及Sub裝飾器的實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Node.js結(jié)合FFmpeg構(gòu)建自動(dòng)化腳本實(shí)現(xiàn)轉(zhuǎn)碼視頻
傳統(tǒng)的視頻轉(zhuǎn)碼中,很常用的工具是FFmpeg,本文主要介紹了Node.js結(jié)合FFmpeg構(gòu)建自動(dòng)化腳本實(shí)現(xiàn)轉(zhuǎn)碼視頻,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
node.js中實(shí)現(xiàn)GET和POST請(qǐng)求的代碼示例
在很多場(chǎng)景中,我們的服務(wù)器都需要跟用戶的瀏覽器打交道,如發(fā)送驗(yàn)證碼、登錄表單提交,請(qǐng)求服務(wù)器數(shù)據(jù)一般都使用GET請(qǐng)求,表單提交到服務(wù)器一般都使用POST請(qǐng)求,本文詳細(xì)介紹了在Node.js中如何處理GET和POST請(qǐng)求,需要的朋友可以參考下2024-12-12
NodeJS前端自動(dòng)化部署實(shí)現(xiàn)實(shí)例詳解
這篇文章主要為大家介紹了NodeJS前端自動(dòng)化部署實(shí)現(xiàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Node.js實(shí)現(xiàn)注冊(cè)郵箱激活功能的方法示例
現(xiàn)在很多網(wǎng)站都需要有注冊(cè)郵箱激活的功能,本篇文章主要介紹了Node.js實(shí)現(xiàn)注冊(cè)郵箱激活功能的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-03-03

