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

发布时间 - 2026-01-10 22:55:52    点击率:

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数据库产生的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# node.js  # 连接  # mongodb  # Node.js操作MongoDB数据库实例分析  # Node.js中使用mongoose操作mongodb数据库的方法  # node.js连接MongoDB数据库的2种方法教程  # Node.js对MongoDB数据库实现模糊查询的方法  # node.js连接mongoDB数据库 快速搭建自己的web服务  # 了不起的node.js读书笔记之mongodb数据库交互  # node.js操作mongoDB数据库示例分享  # Node.js中Mongodb数据库操作方法(最新推荐)  # 命令行  # 在此  # 自带  # 目录下  # 小编  # 多个  # 这么多  # 将其  # 所需  # 给大家  # 长得  # 如果没有  # 则在  # 介绍一下  # 所需要  # 还有一些  # 就以  # 第二步  # 所述  # 连接到 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用.env文件管理环境变量?(最佳实践)  如何在服务器上配置二级域名建站?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  javascript中对象的定义、使用以及对象和原型链操作小结  教你用AI润色文章,让你的文字表达更专业  Laravel如何使用withoutEvents方法临时禁用模型事件  Laravel怎么实现模型属性的自动加密  Laravel如何处理表单验证?(Requests代码示例)  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  手机网站制作与建设方案,手机网站如何建设?  新三国志曹操传主线渭水交兵攻略  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  昵图网官方站入口 昵图网素材图库官网入口  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  大同网页,大同瑞慈医院官网?  Python制作简易注册登录系统  Laravel定时任务怎么设置_Laravel Crontab调度器配置  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Laravel观察者模式如何使用_Laravel Model Observer配置  如何快速搭建自助建站会员专属系统?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Linux安全能力提升路径_长期防护思维说明【指导】  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  大型企业网站制作流程,做网站需要注册公司吗?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  长沙企业网站制作哪家好,长沙水业集团官方网站?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  bootstrap日历插件datetimepicker使用方法  如何用低价快速搭建高质量网站?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel如何集成Inertia.js与Vue/React?(安装配置)  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在IIS中新建站点并解决端口绑定冲突?  如何将凡科建站内容保存为本地文件?  如何做网站制作流程,*游戏网站怎么搭建?  如何实现javascript表单验证_正则表达式有哪些实用技巧  Linux网络带宽限制_tc配置实践解析【教程】  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel中的Facade(门面)到底是什么原理  中国移动官方网站首页入口 中国移动官网网页登录  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel怎么上传文件_Laravel图片上传及存储配置