」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何將 MongoDB 與 Node.js 連結:綜合指南

如何將 MongoDB 與 Node.js 連結:綜合指南

發佈於2024-07-31
瀏覽:156

How to Connect MongoDB with Node.js: A Comprehensive Guide

將 MongoDB 與 Node.js 連接起來是現代 Web 開發人員的關鍵技能。在本指南中,我們將逐步引導您完成整個過程,確保您可以輕鬆整合這些強大的技術。

介紹

MongoDB 是領先的 NoSQL 資料庫,以其靈活性和可擴展性而聞名。您可以使用強大的 JavaScript 運行時 Node.js 建立高效且可擴展的 Web 應用程式。讓我們深入了解無縫連接的步驟。

目錄

  1. 先決條件
  2. 設定 MongoDB
  3. 啟動 Node.js 專案
  4. 使用 Mongoose 連接到 MongoDB
  5. 測試連線
  6. 結論

1. 前提條件

  • JavaScript 和 Node.js 的基本了解。
  • Node.js 和 npm (Node Package Manager) 已安裝在您的系統上。
  • MongoDB 帳戶和本地/遠端 MongoDB 伺服器。

2. 設定MongoDB

首先在您的電腦上安裝 MongoDB 或透過 MongoDB Atlas 設定雲端實例。保存您的連接字串,因為您很快就會需要它。

在 MongoDB Atlas 上設定 MongoDB

2.1 註冊或登入

  • 前往MongoDB Atlas網站:https://www.mongodb.com/cloud/atlas
  • 如果您是 MongoDB Atlas 的新手,請註冊一個新帳戶。否則,請使用您的憑證登入。

2.2 建立新集群

  • 登入後,點選「建立新叢集」按鈕。
  • MongoDB Atlas 提供了一個名為 M0 Sandbox 的免費套餐。對於初學者或小型專案來說,這是一個很好的起點。

2.3 選擇雲端供應商和區域

  • 選擇您的首選雲端供應商(AWS、Google Cloud 或 Azure)。
  • 選擇一個區域。某些區域支援免費套餐,因此請務必選擇最接近您的主要用戶群的區域以減少延遲。

2.4 配置叢集設定

  • 雖然預設設定適用於大多數用例,但您可以根據需要修改叢集的名稱和其他設定。

2.5 新增附加配置(可選)

  • 在其他設定下,您可以設定備份、啟用監控或進行其他進階設定。對於大多數初學者來說,預設設定就足夠了。

2.6 設定網路存取

  • 點選左側面板中的「資料庫存取」部分。
  • 新增具有使用者名稱和強密碼的新使用者。請記住這些憑證,因為您需要它們將應用程式連接到 MongoDB。
  • 在「IP白名單」標籤下,按一下「新增IP位址」。為了安全起見,僅將需要存取的IP列入白名單。出於開發目的,您可以選擇“允許從任何地方訪問”,但出於安全考慮,不建議在生產環境中這樣做。

2.7 取得連接字串

  • 叢集啟動並運行後,按一下「CONNECT」按鈕。
  • 選擇「連接您的應用程式」。
  • 選擇您的驅動程式版本並複製連接字串。這是您將在應用程式中用於連接到 MongoDB 的字串。將連接字串替換為您先前建立的 MongoDB 使用者的密碼。

2.8 連結您的應用程式

  • 在應用程式中使用複製的連接字串開始與 MongoDB 雲端實例互動。

2.9 監控與管理

  • MongoDB Atlas 提供了一個儀表板,您可以在其中監控查詢、效能和其他指標。定期檢查以確保資料庫的運作狀況和效能。

3. 啟動 Node.js 項目

在終端機或命令提示字元中:

mkdir mongo-node-connection
cd mongo-node-connection
npm init -y

上面的程式碼創建了一個新的 Node.js 專案。

4. 使用 Mongoose 連接到 MongoDB

Mongoose 是一個流行的 ODM(物件文件映射器),它促進 Node.js 和 MongoDB 之間的連接。

安裝貓鼬:

npm install mongoose

連接到 MongoDB:

const mongoose = require('mongoose');

// Your MongoDB connection string
const dbURI = 'YOUR_MONGODB_CONNECTION_STRING';

mongoose.connect(dbURI, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log('Connected to MongoDB'))
  .catch((error) => console.error('Connection error', error));

注意:將 'YOUR_MONGODB_CONNECTION_STRING' 替換為您的實際 MongoDB 連接字串。

5. 測試連接

驗證連線:

  • 使用 Mongoose 建立一個簡單的架構和模型。
  • 將文件插入 MongoDB 集合。
  • 取得文件並將其記錄到控制台。
const testSchema = new mongoose.Schema({
  name: String,
  testField: String
});

const TestModel = mongoose.model('Test', testSchema);

const testData = new TestModel({
  name: 'Node-Mongo Connection Test',
  testField: 'It works!'
});

testData.save()
  .then(doc => {
    console.log('Test document saved:', doc);
  })
  .catch(error => {
    console.error('Error saving test document:', error);
  });

執行 Node.js 腳本,如果一切設定正確,您應該會在控制台中看到記錄的測試文件。

六,結論

將 MongoDB 與 Node.js 連接可以透過提供強大的資料庫解決方案來增強您的 Web 應用程式。透過遵循本指南,您已經使用 Mongoose 設定了基礎連接,為將來更高級的操作和查詢鋪平了道路。

版本聲明 本文轉載於:https://dev.to/suleman_ahmed_rajput/how-to-connect-mongodb-with-nodejs-a-comprehensive-guide-1hga?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用PHP從XML文件中有效地檢索屬性值?
    如何使用PHP從XML文件中有效地檢索屬性值?
    從php 您的目標可能是檢索“ varnum”屬性值,其中提取數據的傳統方法可能會使您感到困惑。 - > attributes()為$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ a...
    程式設計 發佈於2025-02-06
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python 導入編解碼器 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有表情符號 emoji_pattern = re.compile(“ [”...
    程式設計 發佈於2025-02-06
  • 在映射到MySQL枚舉列時,如何確保冬眠保留值?
    在映射到MySQL枚舉列時,如何確保冬眠保留值?
    在hibernate中保存枚舉值:故障排除錯誤的列type ,他們各自的映射至關重要。在Java中使用枚舉類型時,至關重要的是,建立冬眠的方式如何映射到基礎數據庫。 在您的情況下,您已將MySQL列定義為枚舉,並在Java中創建了相應的枚舉代碼。但是,您遇到以下錯誤:“ MyApp中的錯誤列類型...
    程式設計 發佈於2025-02-06
  • 如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    [2使用內置的char_length()function。 char_length()和length() 此查詢將從指定的表中檢索所有行,並基於上升順序對它們進行排序指定列的字符長度。帶有更長字符串的行將出現在結果的底部。
    程式設計 發佈於2025-02-06
  • 如何使用代理身份驗證創建GO HTTP客戶端?
    如何使用代理身份驗證創建GO HTTP客戶端?
    在使用Authentication 時,使用authentication時要求。當將代理支持集成到現有的第三方代碼中時,這可能會構成挑戰。 在這種情況下,另一種方法是使用所需的代理配置創建自定義的HTTP客戶端。然後,可以在第三方軟件包中使用此客戶端來代替默認的HTTP客戶端。 以下是如何使用ht...
    程式設計 發佈於2025-02-06
  • 如何使用Python的記錄模塊實現自定義處理?
    如何使用Python的記錄模塊實現自定義處理?
    使用Python的Loggging Module 確保正確處理和登錄對於疑慮和維護的穩定性至關重要Python應用程序。儘管手動捕獲和記錄異常是一種可行的方法,但它可能乏味且容易出錯。 解決此問題,Python允許您覆蓋默認的異常處理機制,並將其重定向為登錄模塊。這提供了一種方便而係統的方法來捕獲...
    程式設計 發佈於2025-02-06
  • 如何在沒有404個錯誤的情況下使用澤西2.0提供靜態資源(例如index.html)?
    如何在沒有404個錯誤的情況下使用澤西2.0提供靜態資源(例如index.html)?
    在澤西島估算靜態資源的404錯誤映射攔截所有傳入的請求,沒有留出空間的網絡容器來提供靜態內容。 為了解決此問題,我們深入探究了過濾器的領域,尤其是com.sun.jersey.spi.container.servlet.servlet .servlet.servletcontainer for J...
    程式設計 發佈於2025-02-06
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    在這里工作/},false); 不幸的是,答案是否。除非在Creation中存儲對處理程序的引用。 要解決此問題,請考慮將事件處理程序存儲在中心位置,例如頁面的主要對象,請考慮將事件處理程序存儲在中心位置,否則無法清理匿名事件處理程序。 。這允許在需要時輕鬆迭代和清潔處理程序。
    程式設計 發佈於2025-02-06
  • 我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    將我的加密庫從mcrypt升級到openssl 問題:是否可以將我的加密庫從McRypt升級到OpenSSL?如果是這樣?使用openssl? 答案:可以使用mcrypt數據加密數據,可以使用openssl。關於如何使用openssl對McRypt進行加密的數據: openssl_decryp...
    程式設計 發佈於2025-02-06
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。可以將fd.append("fileToUpload[]", files[x]);方法用於此目的,允許您在單個請求中發送多個文件。 初始嘗試 在JavaScript中,一種常見方法是:); 但是,此代碼僅處理第...
    程式設計 發佈於2025-02-06
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-02-06
  • 您什麼時候應該使用_mm_sfence,_mm_lfence和_mm_mfence?
    您什麼時候應該使用_mm_sfence,_mm_lfence和_mm_mfence?
    Memory Ordering in x86x86 CPUs have a strongly有序的內存模型,但是C和C的模型較弱。因此,需要其他預防措施以確保正確的內存排序並防止數據損壞或種族條件。 _ mm_sfence _ mm_lfence Summary在NT存儲之後使用_mm_sf...
    程式設計 發佈於2025-02-06
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令arr = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-02-06
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    克服go mod中的模塊路徑差異 coreos/bbolt:github.com/coreos/ [email受保護]:解析go.mod:模塊將其路徑聲明為:go.etcd.io/bbolt `要解決此問題,您可以在go.mod文件中使用替換指令。只需在go.mod的末尾添加以下行:[&& &...
    程式設計 發佈於2025-02-06
  • 如何使用newtonsoft的json.net將JSON列為C#對象列表?
    如何使用newtonsoft的json.net將JSON列為C#對象列表?
    [2 C#對象的列表,利用Newtonsoft的JSON.NET庫,同時僅關注目標類中的特定屬性。 1。將JSON轉換為c#類結構:利用JSON2CSHARP.com的JSON轉換器將JSON轉換為C#類結構。 2。創建目標對像類:定義一個類似於預期對象結構的c#類。 3。值得注意的json字...
    程式設計 發佈於2025-02-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3