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 向会话对象写入了当前用户的信息,在后面我们会通过它判断用户是否已经登录。

原文地址:https://www.cnblogs.com/alantao/p/7999316.html