Nodejs学习六(MongoDB)

一、介绍和安装

下载教程:https://www.bilibili.com/video/BV1BR4y1g7j7?from=search&seid=10863535839844474221&spm_id_from=333.337.0.0

下载地址:https://www.mongodb.com/try/download/community

菜鸟教程:https://www.runoob.com/mongodb/mongodb-tutorial.html

二、启动 停止MongoDB 服务

启动:

# mongodb默认使用执行mongod命令所处盘符根目录下的/data/db 作为自己的数据存储目录
# 所以在第一次执行该命令之前先自己手动新建一个 /data/db
D:\software\MongoDB\bin\mongod --dbpath D:\software\MongoDB\data\db

停止:ctrl + C

三、连接、退出数据库

连接

#该命令默认连接本机的mongoDB服务
mongo

退出:exit

四、基本命令

1.show dbs:查看所有的数据库

2.use 数据库名称:切换到指定数据库(如果没有会新建)

五、通过nodejs连接mongoDB

1.使用官方的mongoDB包

2.使用第三方mongoose来操作mongoBD数据库

官网:https://mongoosejs.com/

demo1.js

// 引包
const mongoose = require('mongoose');
// 连接数据库
mongoose.connect('mongodb://localhost:27017/test');
// 创建一个模型
// MongoDB是动态的,非常灵活,只需要在代码中设计你的数据库就可以了
// mongoose这个包就可以让你的设计编写过程变得非常简单
const Cat = mongoose.model('Cat', { name: String });
// 实例化一个cat
const kitty = new Cat({ name: 'Zildjian' });
// 持久化保存Kitty实例
kitty.save().then(() => console.log('meow'));

七、Mongoose

1、设计Schema发布Model
var mongoose = require('mongoose')
var Schema = mongoose.Schema

// 1.连接数据库
mongoose.connect('mongodb://localhost/itcast')

// 2.设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 值
// 约束的目的是为了保证数据的完整性,不要有脏数据
const userSchema = new Schema({
   username:{
       type:String,
       required:true
   },
   password:{
    type:String,
    required:true
},
email:{
    type:String,
    required:true
}
  });

// 3.将文档架构发布为模型
// mongoose.model():将文档架构发布为模型
// 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
//              mongoose会自动将大写名词的字符串生成小写复数 的集合名称
// 第二个参数:架构Schema
// 返回值:模型构造函数
var User = mongoose.model('User',userSchema)

// 4.当我们有了模型构造函数之后,就可以用这个构造函数对users的数据中进行增删改查

2、增加数据
// 4.1 新增
var wjy =  User({
    username:'wjy',
    password:'123',
    email:'wjy@qq.com'
})

wjy.save(function (err,ret) { 
    if(err){
        console.log("存储失败")
    }else{
        console.log("保存成功")
    }
 })
3、查询数据
//  4.2查询
// 第一个参数:对象 查询条件  若第一个参数不写,则表示查询所有
// 第二个参数:回调函数
// 查到的结果返回数组,每一个结果是一个对象。若未查到则返回空数组
User.find({
    username:'zsss'
},function (err,ret) { 
    if(err){
        console.log("查询失败")
    }else{
        console.log(ret)
    }
 })
4、删除数据
//  4.3删除数据
// 有多少删多少
User.remove({
    username:"zs"
},function(err,ret){
    if(err){
        console.log("删除失败")
    }else{
        console.log("删除成功")
    }
})
5、更新数据
// 4.4更新数据
// 第一个参数:更新依据
// 第二个参数:要更新的内容
// 第三个参数:回调函数
User.findByIdAndUpdate('622c074f100508df37a1abde', {
    password: "123456"
}, function (err, ret) {
    if (err) {
        console.log("更新失败")
    } else {
        console.log("更新成功")
    }
})

八、用mongoose重写CRUD

studet.js

var mongoose = require('mongoose')

mongoose.connect('mongodb://localhost/mongooseCRUD')

var Schema = mongoose.Schema

var studentSchema = new Schema({
    name: {
        type: String,
        required:true
    },
    gender: {
        type: Number,
        enum: [0, 1],//枚举 必须是0或者1
        default: 0
    },
    age: {
        type: Number
    },
    hobbies: {
        type: String
    }
})
module.exports = mongoose.model('Student', studentSchema)


router.js

/**
 * router.js 路由模块
 * 职责:
 *   处理路由
 *   根据不同的请求方法+请求路径设置具体的请求处理函数
 * 模块职责要单一,不要乱写
 * 我们划分模块的目的就是为了增强项目代码的可维护性
 * 提升开发效率
 */

var fs = require('fs')
var Student = require('./student')

// Express 提供了一种更好的方式
// 专门用来包装路由的
var express = require('express')

// 1. 创建一个路由容器
var router = express.Router()

// 2. 把路由都挂载到 router 路由容器中

/*
 * 渲染学生列表页面
 */
router.get('/students', function (req, res) {
  Student.find(function (err, students) {
    if (err) {
      return res.status(500).send('Server error.')
    }
    res.render('index.html', {
      fruits: [
        '苹果',
        '香蕉',
        '橘子'
      ],
      students: students
    })
  })
})

/*
 * 渲染添加学生页面
 */
router.get('/students/new', function (req, res) {
  res.render('new.html')
})

/*
 * 处理添加学生
 */
router.post('/students/new', function (req, res) {
  // 1. 获取表单数据
  // 2. 处理
  //    将数据保存到 db.json 文件中用以持久化
  // 3. 发送响应
  new Student(req.body).save(function (err) {
    if (err) {
      return res.status(500).send('Server error.')
    }
    res.redirect('/students')
  })
})

/*
 * 渲染编辑学生页面
 */
router.get('/students/edit', function (req, res) {
  // 1. 在客户端的列表页中处理链接问题(需要有 id 参数)
  // 2. 获取要编辑的学生 id
  // 
  // 3. 渲染编辑页面
  //    根据 id 把学生信息查出来
  //    使用模板引擎渲染页面

  // replace
  //    字符串模式
  //      简单,但是不支持全局和忽略大小写问题
  //    正则表达式模式
  //      强大,支持全局和忽略大小写
  Student.findById(req.query.id.replace(/"/g, ''), function (err, student) {
    if (err) {
      console.log(err)
      return res.status(500).send('Server error.')
    }
    res.render('edit.html', {
      student: student
    })
  })
})

/*
 * 处理编辑学生
 */
router.post('/students/edit', function (req, res) {
  // 1. 获取表单数据
  //    req.body
  // 2. 更新
  //    Student.updateById()
  // 3. 发送响应
  var id = req.body.id.replace(/"/g, '')
  Student.findByIdAndUpdate(id, req.body, function (err) {
    if (err) {
      return res.status(500).send('Server error.')
    }
    res.redirect('/students')
  })
})

/*
 * 处理删除学生
 */
router.get('/students/delete', function (req, res) {
  // 1. 获取要删除的 id
  // 2. 根据 id 执行删除操作
  // 3. 根据操作结果发送响应数据

  var id = req.query.id.replace(/"/g, '')
  Student.findByIdAndRemove(id, function (err) {
    if (err) {
      return res.status(500).send('Server error.')
    }
    res.redirect('/students')
  })
})

// 3. 把 router 导出
module.exports = router

九、node-mysql

使用node操作mysql数据库

1、安装
npm install mysql --save
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值