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

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

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

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]刪除
最新教學 更多>
  • Go 是否為 Goroutine 特定資料提供 ThreadLocal 等效項?
    Go 是否為 Goroutine 特定資料提供 ThreadLocal 等效項?
    了解Go 中的Goroutine-本地儲存在使用Go 時,開發者經常會遇到需要追蹤與特定Goroutine 相關的資訊的情況。在 Java 等其他語言中,ThreadLocal 為此任務提供了一個優雅的解決方案。 Go 是否提供類似的機制? Go 的 Goroutine 本地儲存方法Go 的標準庫不...
    程式設計 發佈於2024-12-21
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-12-21
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    程式設計 發佈於2024-12-21
  • 如何使用 Prototype.js 實作自動調整文字區域大小的功能?
    如何使用 Prototype.js 實作自動調整文字區域大小的功能?
    使用Prototype 實現自動調整大小的TextArea要增強內部銷售應用程式中的使用者體驗,請考慮向用於送貨地址的文字區域。以下是實現此目的的詳細指南:目標是創建一個可以動態調整其高度以適應文字輸入的文字區域,確保最佳的空間利用率和可讀性。為此,我們將利用 JavaScript 框架 Proto...
    程式設計 發佈於2024-12-21
  • Spring Boot如何配置多個資料來源?
    Spring Boot如何配置多個資料來源?
    在Spring Boot中配置多個資料來源在Spring Boot中,使用多個資料來源可以讓你隔離不同實體的資料存取管理或應用程式。為了實現這一點,使用了 application.properties 檔案和 Bean 配置方法。 application.properties若要新增第二個資料來源,...
    程式設計 發佈於2024-12-21
  • 為什麼 C++ 中的零長度陣列會導致錯誤 2233,如何修復它?
    為什麼 C++ 中的零長度陣列會導致錯誤 2233,如何修復它?
    在 C 中處理「零長度數組」 在 C 中,在遺留程式碼中可能會遇到「零長度數組」的情況。這涉及包含長度為零的陣列的結構。雖然警告被編譯指示抑制,但創建包含此類數組的新結構可能會導致錯誤 2233。為什麼會發生這種情況,可以採取什麼措施來解決它? 使用零長度數組的原因是一個歷史原因允許動態分配數組的...
    程式設計 發佈於2024-12-21
  • 如何設定 HTML `` 標籤的樣式並確保其可見性?
    如何設定 HTML `` 標籤的樣式並確保其可見性?
    HTML標籤的樣式和可見性問題聲明在HTML中,標籤用來定義一個區域可以連結到另一個資源的圖像。然而,使用者在設計樣式並使這些區域始終可見方面遇到了困難。 jQuery 外掛解決方案克服這項挑戰的一種方法是利用 MapHilight jQuery 外掛程式。該插件提供了使用 CSS 懸停效果突出顯示...
    程式設計 發佈於2024-12-21
  • 存取類別中的資料庫物件時如何避免全域變數?
    存取類別中的資料庫物件時如何避免全域變數?
    在類別中使用全域變數建立分頁功能涉及從類別中存取資料庫物件。但是,嘗試存取類別內部的外部變數可能會導致錯誤。讓我們深入研究處理此問題的可能解決方案。 為了解決致命錯誤“在非物件上呼叫成員函數 query()”,資料庫物件需要在類別中可存取。不使用全域變量,更合適的方法是將資料庫物件注入到類別或其方法...
    程式設計 發佈於2024-12-21
  • 如何在C++中產生特定範圍內均勻分佈的隨機數?
    如何在C++中產生特定範圍內均勻分佈的隨機數?
    跨範圍均勻隨機數產生您尋求一種在指定範圍[min, max]內均勻產生隨機數的方法。 rand 的缺陷您目前使用 rand() 和模運算子的實作可能無法確保均勻分佈,因為它的行為取決於 RAND_MAX 和範圍本身。 C 11 和統一範圍產生在C 11 中,std::uniform_int_dis...
    程式設計 發佈於2024-12-21
  • 如何在 Jackson 序列化期間抑制空字段值?
    如何在 Jackson 序列化期間抑制空字段值?
    處理Jackson 序列化中的空字段值Jackson 是一個流行的Java 序列化庫,提供了各種配置選項來定制其序列化行為。常見的情況是抑制空字段值的序列化。這可確保序列化輸出中僅包含非空屬性。 配置 Jackson 進行空值抑制指示 Jackson 忽略 null 有兩種主要方法序列化期間的欄位值...
    程式設計 發佈於2024-12-21
  • JavaScript 如何偵測瀏覽器標籤活動?
    JavaScript 如何偵測瀏覽器標籤活動?
    使用 JavaScript 確定瀏覽器標籤活動在 Web 開發中,通常需要偵測瀏覽器標籤是否正在活躍使用。當選項卡位於背景時,此功能可以透過暫停或最佳化任務來實現高效的資源分配。 確定選項卡活動的一種方法是透過頁面可見性 API。此 API 提供了一個簡單的布林屬性 document.hidden,...
    程式設計 發佈於2024-12-21
  • 插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入記錄時如何解決「一般錯誤:2006 MySQL 伺服器已消失」介紹:將資料插入MySQL 資料庫有時會導致錯誤「一般錯誤:2006 MySQL 伺服器已消失」。當與伺服器的連線遺失時會出現此錯誤,通常是由於 MySQL 配置中的兩個變數之一所致。 解決方案:解決此錯誤的關鍵是調整wait_tim...
    程式設計 發佈於2024-12-21
  • C++ 中數組長度有哪些限制以及如何克服它們?
    C++ 中數組長度有哪些限制以及如何克服它們?
    研究 C 中的數組長度限制 儘管 C 數組具有巨大的實用性,但對其大小施加了一定的限制。這些限制的程度取決於幾個因素,即編譯器、系統硬件,甚至數組的資料類型。 可變長度強制與普遍看法相反, C 並沒有嚴格執行數組長度的絕對限制。相反,它依賴編譯器和系統規範來確定最大大小。這種靈活性允許根據硬體功能進...
    程式設計 發佈於2024-12-21
  • 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...
    程式設計 發佈於2024-12-21
  • 我們如何有效地將 AST 編譯回可讀的原始碼?
    我們如何有效地將 AST 編譯回可讀的原始碼?
    將AST 編譯回原始碼將抽象語法樹(AST) 編譯回原始碼,通常稱為「漂亮印刷」 , 」對於在AST 轉換後產生人類可讀的代碼至關重要。有兩種主要方法需要考慮:保持原始代碼格式或生成美觀的代碼。一種方法涉及向AST 中的每個節點添加->compile 方法。用原始程式碼取代存取的節點。 &&&]恢復...
    程式設計 發佈於2024-12-21

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

Copyright© 2022 湘ICP备2022001581号-3