簡體   English   中英

Node.js-在js文件中連接到mongodb數據庫?

[英]Nodejs - Connecting to mongodb database within a js file?

因此,我一直在本教程中研究如何使用mongodb: http : //doduck.com/node-js-mongodb-hello-world-example/

我已經在包含我的html css和js的項目文件夾中本地安裝了mongodb,我在項目文件夾中運行了npm list mongodb,並且得到了mongodb版本。 我還沒有安裝它,但是據我所知還可以嗎?

無論如何,我嘗試從教程中添加示例以測試連接到mongodb數據庫。 我剛剛創建了一個函數,並在頁面加載后立即調用它:

function connectMongo(){
    alert("test1");
    var MongoClient = require('mongodb').MongoClient;
    alert("test2");
    var myCollection;
    var db = MongoClient.connect('mongodb://127.0.0.1:27017/test',          function(err, db) {
    if(err){
        throw err;
        alert("mongoerror");
    }
    alert("connected to the mongoDB !");
   // myCollection = db.collection('test_collection');
});

}

第一個測試警報有效,但是第二個測試沒有出現。 但是,頁面上的其余代碼仍然可以運行,因此我不認為存在語法錯誤。 我不知道運行此示例的確切含義,誰能告訴我為什么我的函數在下一行后退出

var MongoClient = require('mongodb').MongoClient;

我也安裝了貓鼬,即使我不確定我是否在我的示例中使用了它

抱歉,如果我的問題有點含糊,我真的不知道我在這里做什么

首先,盡管Nodejs是用Javascript編寫的,但您必須清楚地區分客戶端和服務器功能。 Javascript的alert()對於在瀏覽器中彈出消息很有用。 這不是Nodejs要做的,因為它是服務器應用程序。

忘記警報(“消息”); 您要使用console.log(“ message”); 在服務器控制台上查看日志信息。

先決條件

讓我們快速回顧一下Client-Server Web交互:

  1. 服務器已啟動並正在運行
  2. 通過瀏覽器的“客戶請求”頁面
  3. 頁面顯示在客戶端的瀏覽器上

在此處輸入圖片說明

第1步

您缺少的步驟是(1),因為服務器尚未啟動並正在運行。 這是通過在終端上鍵入以下命令來完成的:

$ node name_of_file_here.js

如果語法有錯誤或缺少依賴項,則控制台將記錄錯誤。 如果沒有出現,一切應該很好。

第2步

現在,您仍然無法期望在瀏覽器上看到任何“相關”內容,因為您的服務器盡管已設置了MongoDB實例,但仍未偵聽來自客戶端的請求。 需要添加一些代碼:

'use strict'; 
var http = require('http');
var PORT=8009;
var MongoClient = require('mongodb').MongoClient;

// Connect to the db
var d = MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
  if(!err) {
    console.log("We are connected");
  }
});

//Create a server
var server = http.createServer(function(request, response) {
    console.log("received request");  

    // use MongoClient to get relevant data 
    // var relevant_data = ...; 
    // response.write(relevant_data); 

    response.write("hey there"); 
    response.end(); 
}); 

server.listen(PORT, function(){
    //Callback triggered when server is successfully listening. Hurray!
    console.log("Server listening on: http://localhost:%s", PORT);
});

最后說明

我絕不是MongoDB專家,但我相信必須在您的系統上運行mongodb服務(服務器),MongoDB客戶端才能創建連接。

聽起來您正在嘗試在瀏覽器中運行mongo連接javascript。 mongodb連接通過node可執行文件在服務器上運行。 因此,這是運行服務器端的Web應用程序的javascript代碼,而不是Web應用程序交付給瀏覽器以運行客戶端的javascript。

創建一個文件test.js

function connectMongo(){
  var MongoClient = require('mongodb').MongoClient;
  console.log('MongoClient is',typeof MongoClient)
  var myCollection;
  var url = 'mongodb://127.0.0.1:27017/test';
  var db = MongoClient.connect(url, function(err, db) {
    if(err){
      console.log("mongoerror", err);
      throw err;
    }
    console.log("connected to the mongoDB!");
    myCollection = db.collection('test_collection');
  });
}
connectMongo()

然后在系統上,在命令或shell提示符下運行

node test.js

它應該打印

$ node test.js
MongoClient is function
connected to the mongoDB!
^C

一旦服務器連接到數據庫,就可以將消息從前端javascript傳遞到后端服務器代碼。 通常,這是通過Ajax http請求完成的,因此您的javascript在后台發出了其他HTTP請求。 JQuery客戶端庫為此提供了一個簡單的跨瀏覽器API。 您還可以使用Websockets通過SocketIO從服務器來回傳遞消息

有關Node / Express / MongoDB應用程序的基礎知識,請嘗試以下操作: http : //cwbuecheler.com/web/tutorials/2013/node-express-mongo/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM