八月的前奏就是狮子座,那八月的尾巴还是处女座嘞,今天是八月的最后一天,决定在自己脑子清醒的时候,抓住八月的尾巴,抓紧时间写一篇经典有用瞎折腾的博客,最近可真的是太忙啦,从上篇文章的朋友结婚,到接老妈来京,再到青海之游,再到朋友周末来访,简直安排的满满。不过真的很充实。有的朋友就该问了,朋友结婚你瞎忙什么啊,哈哈哈哈哈别瞎想啊,俺可是伴郎团内的颜值担当呦。不像别人说就我怎么也能当伴郎???我也是满脸问号啦!还有出去游玩虽然感冒,虽然第一天天公不作美,虽然很冷,有那么虽然,但是我们很开心,终于没有留下遗憾。目前就是希望时间慢一些慢一些慢一些......好了废话不说了,最近偷功夫赶紧折腾一下吧。sql学习不知道成本有多大,但是还是不想走常规之路,我想搞一下mongodb,先牛刀小试一把,打算用mongodb+ node +vue 搞个登陆的小demo。来吧,展示!
-
mongodb安装
-
手动mac安装mongodb
手动安装mongodb 去某度上一搜一大把,这个我不想多提,按照上边写的一步一步来就行了。
-
brew安装mongodb
用brew安装mongodb可是走了一个大坑
-
brew install mongodb结果报错,找不到mongodb,网上需找原因,
MongoDB不再开源,不能用上面的命令直接安装了,不过还是可以用brew安装的 -
brew tap mongodb/brew brew install mongodb-community@4.4安装成功了,启动和停止服务
-
brew services start mongodb-community brew services stop mongodb-community配置文件路径:
/usr/local/etc/mongod.conflog文件路径:/usr/local/var/log/mongodb/mongo.logdata目录路径:/data/dbbin目录路径:/usr/local/Cellar/mongodb-community/4.2.6/bin -
值得注意的是,使用
brew安装MongoDB不需要添加PATH环境变量,通过brew安装的软件,默认安装在/usr/local/Cellar/目录下,执行brew list可以查看所有通过brew安装的软件:
-
-
设置账号和密码
-
show dbs //查看所有数据库 -
use admin // 进入admin数据库,安装完mongodb初始有一个System和一个congfig数据库 -
db.createUser({ user: "admin", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] }) // 创建管理员账户,mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。admin用户用于管理账号,不能进行关闭数据库等操作。 -
db.createUser({user: "root",pwd: "password", roles: [ { role: "root", db: "admin" } ]}) //创建完admin管理员,创建一个超级管理员root。角色:root。root角色用于关闭数据库。 db.shutdownServer() -
use yourdatabase //进入你自己的数据库 db.createUser({user: "user",pwd: "password",roles: [ { role: "dbOwner", db: "yourdatabase" } ]}) //role: "dbOwner"代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等当账号管理员和超级管理员,可以为自己的数据库创建用户了。(坑)这时候一定,一定要切换到所在数据库上去创建用户,不然创建的用户还是属于admin。 -
use admin db.auth("admin","password") //删除单个用户 db.system.users.remove({user:"XXXXXX"}) //删除所有用户 db.system.users.remove({})
-
-
连接mongodb数据库
-
mongo // 坑坑坑 找了好久的网上说的命令,最后还是的自己看英文的文档,还是英文文档比较靠谱 -
> use xxx 数据名 switched to db xxx > db xxx > -
show dbs // 可以看到并没有新建的数据库 // 新建的数据库需要向新建的数据库中插入数据才能显示出来 -
db.xxx.insert({"name":"yuhior"}) //
-
-
可视化工具Robo T3 这个有点类似于mysql 的可视化工具navact,其实也没有什么就是可以看到数据
-
-
node连接mongodb
-
安装node 吧我使用的koa2的脚手架
npm install -g koa-generator -
创建项目文件目录
koa2 --hbs koa2-zcls // handlebars 模版 -
安装依赖
npm install -
目录结构 自己增加一个db文件夹
--bin --www --db --db.js --index.js --node_modules --public --images --javascripts --stylesheets --routes --index.js --users.js --views --error.hbs --index.hbs --layout.hbs --app.js package.json package-lock.json -
使用mongoose进行数据库连接
安装mongoose库
npm install mongoose --save-dev -
db目录下db.js上代码 先导出mongoose扩展模块 ,该模块进行连接数据库 连接异常 断开连接等扩展
const mongoose = require('mongoose'); // 连接 const DB_URL = 'mongodb://localhost:27017/myBlog' mongoose.connect(DB_URL) mongoose.connection.on('connected',function(){ console.log('Mongoose connection open to ' + DB_URL); }) /** * 链接异常error 数据库链接错误 */ mongoose.connection.on('erroe',function(err){ console.log('Mongoose connection disconnected'); }) /** * 连接断开disconnected 连接异常断开 */ mongoose.connection.on('disconnected',function(){ }) module.exports = mongoose -
db的index.js ,定义查询和保存方法
const mongoose = require('./db'); const { model ,Schema} = require('mongoose'); //const Schema = mongoose.Schema; const ceshiSchema = new Schema({ title: String, body:String, date:Date },{ collection: 'ceshi' }) const MyModel = mongoose.model('ceshi', ceshiSchema); class Mongodb { constructor(){ } // 查询 query () { return new Promise((resolve,reject)=>{ MyModel.find({},(err,res)=>{ if (err) { reject(err) } resolve(res) }) }) } // 保存 save(obj){ const m = new MyModel(obj) return new Promise((resolve,reject)=>{ m.save((err,res)=>{ if (err) { reject(err) } resolve(res) console.log(res) }) }) } } module.exports = new Mongodb() -
routes/index.js中进行定义接口
const ModelDb = require('./../db'); outer.get('/mongotest',async(ctx,next)=>{ let data = await ModelDb.query() ctx.body = data })
-
-
欲知后事如何且听先回分解 下一章应该会讲vue请求弄的接口,功力不够还需要来回折腾啊,和自己性格一样想走就走想做就做。