Node.js连接MongoDB数据库产生的问题

NoSQL的代表MongoDB最近大受欢迎,虽然还有一些功能没有完善,但是并不影响它的大火。

Node.js是使用JavaScript 编写的可以运行在服务端的JS语言。

那么,二者碰撞会产生什么样的火花呢。

今天,我就以一个简单的例子介绍一下(在本地新建数据库文件并将其内容显示到浏览器窗体);

1.准备部分:所需要的工具IDE为WebStorm,MongoDB,Node.js。

1)首先需要下下载MongoDB并且配置环境变量(Path  指向安装目录)

第一步:建立MongDB服务输入命令 mongod.exe --bind_ip 127.0.0.1(本地IP地址) --logpath "D:\M_LOG\mongodb.l
og(日志文件所在地)" --logappend --dbpath "D:\M_DB(数据表所在地)" --port 27017(端口号)--serviceName " Mongod(服务名)" --serviceDisplayName "Mongods(显示的名称)" --install

第二步:命令行输入mongo 进入mongoDB环境;输入use dbtest(使用dbtest这个数据库,如果没有会自动创建新的数据库);

输入db.createCollection("表名字")创建表;

输入db.表名.insert({"key1":"value1","key2":"value2"});汇创建一条数据它并不是严格意义的数据库,所以允许多个不同的key存在;

输入db.表名.find();查看表里的数据

2)下载Node.js 一直下一步即可,它自动包含了一个包管理工具npm.

3)  使用WebStorm新建一个Node.js Express
APP 工程。

4)在WebStorm自带的命令行进入node_moudles目录下(cd node_moudles)下载的模块尽量放在此目录下。

输入npm install mongodb,下载Node.js连接MongoDB的所需模块。

5)在自带的命令行工具输入npm install ejs。下载ejs模板;

2.代码部分:

1)找到新建工程目录下的app.js,将模板替换为ejs模板

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

2)如果app.js没有监听端口的话则在最后加入

app.listen(3000); 

3) 在项目的views文件夹下新建立三个测试用的ejs文件(新建html文件后缀改为.ejs)

index1.ejs

<!DOCTYPE html>
<html>
<head>
  <title>my index</title>
  <link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>Hello World</h1>
<p>Welcome to</p>
<p><a href="login" rel="external nofollow" >登陆</a></p>
</body>
</html>
login.ejs
[html] view plain copy
<!DOCTYPE html>
<html>
<head>
  <title>my login</title>
  <link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>Hello World</h1>
<p>Welcome to</p>
<form action="ucenter" method="post">
  <p>
    <span>name:</span>
    <br>
    <input id="name" name="name" type="text">
  </p>
  <p>
    <span>password:</span>
    <br>
    <input id="password" name="password" type="password">
  </p>
  <p><input type="submit" value="submit"></p>
</form>
<form action="checkall" method="get">
  <input type="submit" value="全部">
</form>
</body>
</html>

checkinfo.ejs(重点 返回数据表信息)

<!DOCTYPE html>
<html>
<head>
  <title>my checklist</title>
  <link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<%= datas %>
<br/>
<%= reason %>
<br/>
<%for(var i =0;i<datalist.length;i++){%>
<ol>
  <li><%=datalist[i]._id%></li>
  <li>
    <%= datalist[i].name %>
    <%= datalist[i].like%>
  </li>
  <li>
    <%= datalist[i].password %>
    <%= datalist[i].age%>
    <%= datalist[i].info%>
  </li>
</ol>
<%}%>
</body>
</html> 

4)在routes(学名路由)文件夹下中的index.js中做以下改变

var express = require('express');
var router = express.Router();
/*
 var user = require('../bin/app2').user;
 */
var mongo = require('mongodb');// 加载mogodb模块
var DB_CONN_STR = 'mongodb://localhost:27017/testdb1';//数据库的地址
/* GET home page. 处理请求信息*/
router.get('/', function (req, res, next) {
  res.render('index1', {title: 'index1'});
});
/* login */
router.get('/login', function (req, res) {
  res.render('login', {title: 'login'});
});
/*验证用户是否存在*/
var selectData = function (db, str, callback) { // 查找MongoDB是否含有相应的集合
  //连接到表
  var collection2 = db.collection('user');
  collection2.find(str).toArray(function (err, result) {
    if (err) {
      console.log('Error:' + err);
      return;
    }
    callback(result);
  });
}
router.post('/ucenter', function (req, res) {  //为验证请求添加路由
  var query = {name: req.body.name, password: req.body.password};
    mongo.connect(DB_CONN_STR, function (err, db) {
      console.log("连接成功!");
      selectData(db, query, function (result) {
        if (result != 0) {
          console.log(query.name + ": 登陆成功 " + new Date());
          res.render('ucenter', {title: 'ucenter'});//跳转到指定页面
        } else {
          console.log(query.name + ": 登陆失败 " + new Date());
          res.redirect('/');//返回当前页面
        }
        db.close();
      })
    });
});
/*查找所有数据*/
router.get("/checkall",function (req,res) {
  mongo.connect(DB_CONN_STR,function (err,db) {
    var collection = db.collection('user');
    collection.find().toArray(function (err,result) {
      if(err){
        console.log('ERROR'+err);
        res.redirect('/');
        return;
      }
      console.log(result);
      res.render('checkinfo',{
         datas:"Hello Noder"
        ,datalist:result
        ,reason:"由于你长得丑,服务器拒绝了你这次的访问"
      });
      db.close();
    });
  });
})
module.exports = router; 

3.废话这么多,重要出结果了

1)先看看MongoDB数据表里的数据

2)登录界面

3)登陆成功

4)网页返回全部数据

以上所述是小编给大家介绍的Node.js连接MongoDB数据库产生的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Node.js连接mongodb实例代码

    前面介绍了node.js操作mysql以及redis的内容,这里继续学习操作mongodb的内容. 安装驱动 安装命令 cnpm install mongodb 安装成功 数据库操作 因为mongodb是文档类型的数据库,与mysql有很大不同,mongodb会自动创建数据库和集合,并不需要提前进行手动创建. Insert var MongoClient = require("mongodb").MongoClient; var DB_CONN_STR = "mongodb:

  • Node.js Mongodb 密码特殊字符 @的解决方法

    在去年的 DB 勒索事件之后, 不少的同学开始加强 Mongodb 的安全性, 其中一种办法就是设置复杂的密码. 那么问题来了, 如果设置的密码里包含一些如 "@", ":" 一样的特殊字符怎么办? mongodb://username:password@host:port/db 这种情况可能使得你的 Mongodb 连接串不能被正常解析, 并且完全有可能出现. 烦人的地方在于: 1.使用 "" 双引号将 password 包起来没有用 2,使用

  • Node.js对MongoDB数据库实现模糊查询的方法

    前言 模糊查询是数据库的基本操作之一,实现对给定的字符串是否与指定的模式进行匹配.如果字符完全匹配,可以用=等号表示,如果部分匹配可认为是一种模糊查询.在关系型数据中,通过SQL使用like '%fens%'的语法.那么在mongodb中我们应该如何实现模糊查询的效果呢. 目录 mongodb模糊查询 nodejs通过mongoose的模糊查询 1. mongodb模糊查询 我们打开mongodb,以name文字字段进行测试. 精确查询 当{'name':'未来警察'}时,精确匹配到一条记录.

  • node.js操作mongodb简单示例分享

    前两篇文章我们介绍了nodejs操作redis和MySQL,下面简要测试一下nodejs操作mongodb: 首先安装nodejs mongodb npm install mongodb 代码 var mongodb = require('mongodb'); var server = new mongodb.Server('localhost', 27017, {auto_reconnect:true}); var db = new mongodb.Db('mydb', server, {sa

  • node.js连接MongoDB数据库的2种方法教程

    前言 MongoDB Node.js驱动程序是被官方所支持的原生node.js驱动程序,他是至今为止最好的实现, 并且得到了MongoDB官方的支持.MongoDB团队已经采用MongoDB Node.js驱动程序作为标准方法. npm install mongodb@1.4.3 // MongoDB Node.js驱动程序 npm install mongoose@3.8.8 //mongoose模块 要从Node.js连接MongoDB数据库我们有两种方法可选择: 通过实例化mongodb模

  • node.js操作MongoDB的实例详解

    node.js操作MongoDB时,需要安装mongodb包 1.使用npm安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 2.使用cnpm安装mongodb包 cnpm install mongodb node.js操作MongoDB时的四种方式:插入数据.更新数据.删除数据.查找数据. 操作步骤 步骤1 创建执行文件xx.js 步骤2 终端调用执行文件 node xx.js 注意: 操作前需要启动服务

  • Node.js连接MongoDB数据库产生的问题

    NoSQL的代表MongoDB最近大受欢迎,虽然还有一些功能没有完善,但是并不影响它的大火. Node.js是使用JavaScript 编写的可以运行在服务端的JS语言. 那么,二者碰撞会产生什么样的火花呢. 今天,我就以一个简单的例子介绍一下(在本地新建数据库文件并将其内容显示到浏览器窗体): 1.准备部分:所需要的工具IDE为WebStorm,MongoDB,Node.js. 1)首先需要下下载MongoDB并且配置环境变量(Path  指向安装目录) 第一步:建立MongDB服务输入命令

  • node.js连接mongoDB数据库 快速搭建自己的web服务

    一.写在前面 人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二.安装node.js 接触过后端开发的人都知道,首先要安装服务.作为新手,肯定是选择最简单的可视化安装了(傻瓜式下一步,其它的方式等熟悉相关操作后自然就会了的),通过官网http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi 下载电脑适配的安装包(这个是windo

  • Node.js连接mongo数据库上传文件的方法步骤

    目录 效果 初始化 model 下创建index.js用于连接数据库时的信息 修改app.js文件里的信息 router下修改user.js文件 创建上传文件保存文件夹 在public下新建一个index.html 用于请求时的主页面 效果 初始化 创建项目文件夹mondo-express 安装包 npm i express-generator -g(作用一键生成项目列表) 在项目文件夹mondo-express用终端打开输入npx express-generator自动生成项目目录 安装包 终

  • node.js连接mongoose数据库方法详解

    目录 创建项目命令 连接mongoose数据库 配置跨域 运行 创建项目命令 express --view ejs 项目名 进入项目,我们需要npm i 下载配置文件 有时候会出先端口已经被占用的情况,我们可以在bin目录下www文件中修改端口 连接mongoose数据库 我们创建一个新的文件夹,然后在文件夹下创建一个连接mongoose数据库的文件,代码如下 var mongoose=require('mongoose') mongoose.connect('mongodb://127.0.0

  • node.js操作mongoDB数据库示例分享

    连接数据库 复制代码 代码如下: var mongo=require("mongodb");  var host="localhost";  var port=mongo.Connection.DEFAULT_PORT;  var server=new mongo.Server(host,port,{auto_reconnect:true});//创建数据库所在的服务器服务器  var db=new mongo.Db("node-mongo-example

  • Node.js操作MongoDB数据库实例分析

    本文实例讲述了Node.js操作MongoDB数据库.分享给大家供大家参考,具体如下: Node.js操作MongoDB npm init npm i mongodb --save { "name": "test", "version": "1.0.0", "description": "", "main": "app.js", "scr

  • windows下安装mongodb以及node.js连接mongodb实例

    一.MongoDB 下载 下载地址  https://www.mongodb.com/download-center#community  选择windows版下载,然后安装. 二.安装完毕后创建数据目录. MongoDB将数据目录存储在 db 目录下.但是这个数据目录不会主动创建,我们在安装完成后需要创建它.请注意,数据目录应该放在根目录下((如: C:\ 或者 D:\ 等 ).可以选择命令行创建,也可以手动创建. 最后生成这样的目录 c:>data>db 三.命令行下运行 MongoDB

随机推荐