[英]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步
您缺少的步驟是(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.