[英]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.