繁体   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