设为首页 收藏本站
查看: 1596|回复: 0

[经验分享] nodeJS学习(8)

[复制链接]

尚未签到

发表于 2017-12-16 15:34:18 | 显示全部楼层 |阅读模式
  使用 mongodb 的小系统
  参考:https://my.oschina.net/chenhao901007/blog/312367
  1. Robomongo 创建项目的数据库和数据表
  参考:http://www.iyunv.com/database/201604/498288.html


  • 配置连接:
DSC0000.jpg



  • Ok,连接成功齐活儿~
DSC0001.png



  • 一般不使用上述数据库,需新建自己的数据库, 鼠标移到 local 上---右键---Creat DataBase---输入 数据库名称 --- 单击 creat 即可,如下建立了一个名为 recordsDB 的数据库 :
DSC0002.png

  新建的数据库 recordsDB 展开,如下图:
DSC0003.png



  • 然后,我们需要建立 collection,即建立数据表: 如下,我们建立一个名为 “users” 的用户数据表:右键Collections --- Creat Collection ... --- 填写Collection Name --- Creat 即可
DSC0004.png


   结果如下:
         DSC0005.png

  • 数据表建好后,就可以插入数据 or 导入数据

       (1) 插入数据/字段(Document):鼠标右键点击数据库表->选择Insert Document,弹出:
DSC0006.png

  回车 填写 单条数据,如下:建立一个用户和密码信息--- 单击save 保存
DSC0007.png

  双击数据表名称, 结果如图(其中 _id 最好由数据库自己生成,以防冲突/重复/...):
DSC0008.png

  有了数据之后,就可以在项目中使用啦,\(^o^)/~
  2.  项目使用 mongodb 数据库
  主要参考:https://cnodejs.org/topic/547293caa3e2aee40698df0b,帮了很大忙~~
  前提(已安装):Nodejs、express 和 mongodb 的安装(这里安装的都是最新版的)
  先对整个项目基础如下:
  ---模板: EJS 模板  
  ---mongodb 相关支持模块:mongodb 和 mongooose
  实际过程如下:
  (1) 用 express 创建一个项目:这里我创建一个名字叫 testNode的网站,用的模板引擎是 ejs。
  

express --view=ejs testNode   # 不懈模板时,默认的创建 jade 模板引擎  

  回车,按提示输入
  

cd testNode & npm install # 进入到你创建的项目目录,并读取根目录下pakage.json文件然后安装项目所依赖的包  

  关于项目模板此处不再重复说明,详情请看 webstorm/...开发 NodeJS 项目-节1。
  此时项目模板已建立好,基本的结果就有了,之后就是使用数据库了
  (2) mongodb 安装 和 mongodb 支持模块的安装


  • 安装 mongodb 数据库,上节已详细说明下载&安装&启动及 遇到的启动问题,此处不再重复,详情请看:WS开发 NodeJS 项目-节2 <安装&设置&启动 mongodb 数据库++遇到的问题>
  • 项目支持 mongodb 的模块下载(即向当前的项目包里添加支持模块):此处需将 mongodb 和 mongoose 两个模块加入模板支持。步骤如下:
  a. 需先将 mongodb 和 mongoose 下载到 npm 下的本地 mode_module 里,此处按原来的安装目录进行,详情参考:NPM(Node.js) 使用介绍,使用命令如下:
  

cd d:\nodeJS\node_modules\npm  # 注:该目录下是真实的存储 npm 安装好的文件,其含有 node_modules 文件夹  

npm install mongodb --save   # 安装 mongodb 模块  

npm install mongoose --save # 安装 mongoose 模块  

  b. 再将这两个模块加入到自己的 testNode 项目中,首先要进入自己的 testNode 目录下存储 node_modules 的目录下,使用命令如下:
  

cd d:\testNode\  # 注:进入存储项目模块的目录  

npm install mongodb --save   # 安装 mongodb 模块  

npm install mongoose --save # 安装 mongoose 模块  4 npm install nodemon --save  # nodemon不是必须的,但使用nodemon可以更让程序在修改过程中,不用频繁重启伺服,极大地方便开发
  npm install supervisor --save  # 安装后可以偷懒;它会在你每次修改完代码后自动重启
  

  此时就可以打开你的 package.json 文件,可以看到里面多了两个模块,如下(都是最新版,也可自行调整为自己想要的版本):
DSC0009.png

  到此,项目对 mongodb 的支持模块安装完毕,下面就开始项目编写和对 mongodb 数据库的利用。
  (3)项目编写 和 mongodb 使用
  需求:此处的需求正是上面两个步骤,此处提出,是为了整理并验证


  • 可检查自己的项目支持,打开 项目根目录下的 package.json,显示如下:  

    {   # 该部分建立项目时,自生成的,不必在意  "name": "testnode",
      "version": "0.0.0",
      "private": true,
      "scripts": {
      "start": "node ./bin/www"
      },
      "dependencies": { # 此部分是 项目支持 模块,下面有的必须有(已标出),有的可有可无,不必在意
      "body-parser": "~1.17.1",
      "cookie-parser": "~1.4.3",
      "debug": "~2.6.3",
      "ejs": "~2.5.6",     # 必须有
      "express": "~4.15.2",   # 必须有
      "mongodb": "^2.2.25",  # mongodb 支持,必须有
      "mongoose": "^4.9.5",  # mongodb 连接支持,必须有
      "morgan": "~1.8.1",
      "serve-favicon": "~2.4.2"
      }
      }
      # 未注明的 是建立项目时自生成的,可有可无,一般是方便调试程序,有无不必在意!!
      


  • 已经在数据库中建立自己的数据库和数据库表,本文使用一个名为 “recordsDB” 的数据库,建立一个名为 users 的数据库表,插入一条数据:{“name”:“tangbao”,“password”:“wula123”},可使用数据库语句,如下:  

    use recordsDB # 创建一个叫 recordsDB 的数据库  db.createCollection(“users”) # 创建一个集合
      db.users.insert({“name”:“tangbao”,“password”:“
    wula123”}) # 给users集合添加一个文档。  

      也可使用 Robomongo 工具创建,详情过程可参照本节 第一部分1. Robomongo 创建项目的数据库和数据表(自己使用该工具创建的)

  再接着,真正的项目编程开始~~


  • 在项目中连接刚才创建的数据库:在项目根目录下创建一个的文件夹 database ,然后在创建一个 db.js,内容如下:  

    var mongoose = require('mongoose');  

    var db = mongoose.connect('mongodb://localhost/recordsDB');//;连接数据库  
    var Schema = mongoose.Schema;   //  创建模型
      
    var userScheMa = new Schema({
      name: String,
      password: String
      
    }); //  定义了一个新的模型,但是此模式还未和users集合有关联
      
    exports.user = db.model('users', userScheMa); //  与users集合关联
      


  • 接着在 views 文件夹创建视图文件  

    我们上面用 express 创建的项目视图文件是 ejs 后缀名,我们一般习惯使用 html 后缀名。  
    那么我们怎么让他识别html的视图文件呢?
      

      
    在app.js文件中 找到
      

    >app.set('view engine', 'ejs');  
    把它替换成:
      

    >app.set( 'view engine', 'html' );  

      再用app.engine()方法添加注册模板引擎的后缀名。代码:
      

    >app.engine('.html',require('ejs').__express); //两个下划线  

      

    接着,我们创建一个 login.html(登陆页面), index.html(原来有,改一下后缀名就行), ucenter(登陆之后的页面):  

      

    login.html  

    <!DOCTYPE html>  
    <html>
      <head>
      <title>my login</title>

      <link>  </head>
      <body>
      <h1>Hello World</h1>

      <p>Welcome to <%=>  <form action="ucenter" method="post">
      <p>
      <span>name:</span>
      <br>
      <input name="name" type="text">
      </p>
      <p>
      <span>password:</span>
      <br>
      <input name="password" type="password">
      </p>
      <p><input type="submit" value="submit"></p>
      </form>
      </body>
      
    </html>
      

      

    index.html  

    <!DOCTYPE html>  
    <html>
      <head>
      <title>my index</title>

      <link>  </head>
      <body>
      <h1>Hello World</h1>
      <p>Welcome to <%=>  <p><a href="login">登陆</a></p>
      </body>
      
    </html>
      

      

    ucenter.html  

    <!DOCTYPE html>  
    <html>
      <head>
      <title>my ucenter</title>
      <link>  </head>
      <body>
      <h1>Hello World</h1>
      <p>您已经成功登陆</p>
      </body>
      
    </html>
      


  • 最后就是路由的控制,更改在 routes 文件夹下的 index.js 文件  

    var express = require('express');  

    var router = express.Router();  

    var user = require('../database/db').user;  

      

      

    /* GET home page. */  
    router.
    get('/', function(req, res) {  res.render(
    'index', {>
    });
      

      

    /* login */  
    router.
    get('/login', function(req, res) {  res.render(
    'login', {>
    });
      

      

    /* ucenter */  
    router.post(
    '/ucenter', function(req, res) {var query = {name: req.body.name, password: req.body.password};  (function(){
      user.count(query, function(err, doc){   
    //count返回集合中文档的数量,和 find 一样可以接收查询条件。query 表示查询的条件  if(doc == 1){
      console.log(query.name + ": 登陆成功 " + new Date());

      res.render('ucenter', {>  }else{
      console.log(query.name + ": 登陆失败 " + new Date());
      res.redirect('/');
      }
      });
      })(query);
      
    });
      
    module.exports = router;
      


  • 接下来,就可以查看效果了,可使用 命令(也可使用 webstorm 工具 打开项目并运行):  

    npm start  

      根据提示 打开 网址 http://127.0.0.1:3000/,出现如下页面:

DSC00010.png

  紧接着点击页面上的 登录,出现如下图:
DSC00011.png

  填写 上述已有的 users,如下:{“name”:“tangbao”,“password”:“wula123”},如下:
DSC00012.png

  点击 submit,成功登录,出现如下图:
DSC00013.png

  若不存在的用户,则会返回 index.html 的页面,重新登录界面。
  该节整个就完了,本节是一个完整的使用 mongodb 的小例子,至此完成O(∩_∩)O~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424728-1-1.html 上篇帖子: linux安装mongodb(设置非root用户和开机启动) 下篇帖子: 使用express、react、webpack打包、socket.io、mongodb、ant.design、less、es6实现聊天室
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表