这里有新鲜出炉的 Node.js 教程,程序狗速度看过来!
Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的 易于扩展的网络应用 · Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, 非常适合 运行在分布式设备 的 数据密集型 的实时应用
Node.js 是使用 JavaScript 编写的可以运行在服务端的 JS 语言。node.js 和 mongodb 碰撞会产生一系列问题,下面通过本文给大家分享 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)下载的模块尽量放在此目录下。
输入
下载 Node.js 连接 MongoDB 的所需模块。
- npm install 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>
- <%=d atas %>
- <br/>
- <%=r eason %>
- <br/>
- <%for(var i=0;i<datalist.length;i++){%>
- <ol>
- <li>
- <%=datalist[i]._id%>
- </li>
- <li>
- <%=d atalist[i].name %>
- <%=d atalist[i].like%>
- </li>
- <li>
- <%=d atalist[i].password %>
- <%=d atalist[i].age%>
- <%=d atalist[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 数据库产生的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 phperz 网站的支持!
来源: http://www.phperz.com/article/17/0624/327911.html