zoukankan      html  css  js  c++  java
  • MongoDB数据库

    一.MongoDB(开源的 NoSQL 数据库) ==> 是一个对象数据库,它没有表、行等概念,也没有固定的模式和结构, 数据格式就是JSON, 示例

    { 
        "_id" : ObjectId( "4f7fe8432b4a1077a7c551e8" ),
        "uid" : 2004,
        "username" : "byvoid",
        "net9" : { 
            "nickname" : "BYVoid",
            "surname" : "Kuo",
            "givenname" : "Carbo",
            "fullname" : "Carbo Kuo",
            "emails" : [ "byvoid@byvoid.com", "byvoid.kcp@gmail.com" ],
            "website" : "http://www.byvoid.com",
            "address" : "Zijing 2#, Tsinghua University" 
        }
    }
    

    1.下载 https://www.mongodb.com/download-center#community

    2.解压缩到自己想要安装的目录,比如F:mongodb

    3.安装完后创建文件夹

    • F:mongodbdatadb 安装db
    • F:mongodbdatalog 日志文件
    • F:mongodbdatalogMongoDB.log 在log文件夹下创建一个日志文件MongoDB.log

    4.运行cmd.exe进入dos命令界面,执行下列命令

    > cd F:mongodbin
    > F:mongodbin>mongod -dbpath "F:mongodbdatadb"
    

    看到类似的信息,则说明启动成功,默认MongoDB监听的端口是27017,mysql的是3306

    5.测试连接

    新开一个cmd窗口,进入mongodb的bin目录,输入mongo或者mongo.exe, 如有看到版本则表示连接127.0.0.1:27017数据库成功


    6.输入exit或者ctrl+C可退出。

    7.当mongod.exe被关闭时,mongo.exe 就无法连接到数据库了,因此每次想使用mongodb数据库都要开启mongod.exe程序,所以比较麻烦,此时我们可以将MongoDB安装为windows服务

    运行cmd,进入bin文件夹,执行下列命令

    > F:mongodbin>mongod --dbpath "F:mongodbdatadb" --logpath "F:mongodbdatalogMongoDB.log" --install --serviceName "MongoDB"
    

    这里MongoDB.log就是开始建立的日志文件,--serviceName "MongoDB" 服务名为MongoDB

    接着启动mongodb服务

    > F:mongodbin>NET START MongoDB
    

    8.关闭服务和删除进程

    > F:mongodbin>NETstop MongoDB (关闭服务)
    > F:mongodbin>mongod --dbpath "F:mongodbdatadb" --logpath "F:mongodbdatalogMongoDB.log" --remove --serviceName "MongoDB" (删除,注意不是--install了)
    

    9.如果报错(Cannot find module 'mongodb'), 则缺少mongodb依赖模块

    $ npm install mongodb
    

    二.MongoDB数据库可视化工具RoboMongo

    下载地址 https://robomongo.org/download

    1.创建新的Mongodb ==> 点击Create

    2.自定义db名称 

    3.连接

    4.操作界面

    三. node连接数据库

    1.创建settings.js文件, db 是数据库的名称, host 是数据库的地址。 cookieSecret 用于 Cookie 加密与数据库无关

    module.exports = {  
        cookieSecret: 'microblogAlan',  
        db: 'microblog',                // 数据库名称
        host: 'localhost'               // 数据库的地址
    };
    

    2.models/db.js 数据库连接配置模块 

    var settings = require('../settings'),
        Db = require('mongodb').Db,
        Connection = require('mongodb').Connection,
        Server = require('mongodb').Server;
        
    module.exports = new Db(settings.db, new Server(settings.host, '27017', {}), {safe: true});
    // module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT, {}), {safe: true});
    

    如果报错(Cannot read property 'DEFAULT_PORT' of undefined ) Connection.DEFAULT_PORT 改成27017

    3.express4里要单独安装cookie-parser和express-session

    express.cookieParser() 是 Cookie 解析的中间件
    express.session() 则提供会话支持,设置它的 store 参数为 MongoStore 实例,把会话信息存储到数据库中,以避免丢失。

    $ npm install express-session --save
    $ npm install cookie-parser --save
    

      

    4.app.js引用settings模块的时候, 数据库引用

    var settings = require('./settings'); 
    var cookieParser = require('cookie-parser')
    var session = require('express-session')
     
    app.use(cookieParser())
    /*
    数据库引用
    */
    app.use(session({
        secret: settings.cookieSecret,
        store: new MongoStore({
            // db: settings.db,
            url: 'mongodb://localhost/' + settings.db
        })
    }));
    

    5.当我们从一个action重定向(redirect)到另一个action时,如果想要将数据从上一个action携带到新的action中,就可以采用flash。

    当然,用session也是可以的,只不过用session的时候需要注意下,需要自己手动清除用完后的变量。因为如果不清楚session,会造成内存的浪费。

    但是最新版本的express已经不支持flash了, 先安装

    $npm install connect-flash
    

    然后在app.js中引入

    var flash = require('connect-flash');
    app.use(flash());
    

    1.req.body 就是 POST 请求信息解析过后的对象,例如我们要访问用户传递的password 域的值,只需访问 req.body['password'] 即可。
    2.req.flash 是 Express 提供的一个奇妙的工具,通过它保存的变量只会在用户当前和下一次的请求中被访问,之后会被清除,通过它我们可以很方便地实现页面的通知和错误信息显示功能。
    3.res.redirect 是重定向功能,通过它会向用户返回一个 303 See Other 状态,通知浏览器转向相应页面。
    4.crypto 是 Node.js 的一个核心模块,功能是加密并生成各种散列,使用它之前首先要声明 var crypto = require('crypto')。我们代码中使用它计算了密码的散列值。
    5.User 是我们设计的用户对象,在后面我们会详细介绍,这里先假设它的接口都是可用的,使用前需要通过 var User = require('../models/user.js') 引用。5.6 用户注册和登录
    6.User.get 的功能是通过用户名获取已知用户,在这里我们判断用户名是否已经存在。
    7.User.save 可以将用户对象的修改写入数据库。
    8.req.session.user = newUser 向会话对象写入了当前用户的信息,在后面我们会通过它判断用户是否已经登录。

  • 相关阅读:
    fabric-byfn.sh名利解析
    Hyperledger Fabric--byfn.sh 命令分析
    ubuntu修改网络地址
    docker常用命令
    添加daocloud加速器-18.04.2-Ubuntu
    CA/RA简介
    Redhat防火墙
    Linux上Oracle 11g启动与关闭
    redhat网络配置文件详解
    uva1349Optimal Bus Route Design
  • 原文地址:https://www.cnblogs.com/alantao/p/7999316.html
Copyright © 2011-2022 走看看