node学习笔记:使用mongoDB

2.mongoDB的使用

2.1 cmd窗口中操作mongoDB

进入操作mongoDB控制台:

mongo

查看所有数据库:

show dbs

查看当前数据库:

db

切换数据库:

use 数据库名字

查看当前数据库的所有集合:

show collections

对数据进行增删改查:

db.集合名.方法()

具体的增删改查操作参考菜鸟教程!

2.2 node中使用mongoose去操作mongoDB

1.安装mongoose(随便选一个)

npm i mongoose
cnpm i mongoose
yarn add mongoose

2.导入mongoose

const mongoose = require('mongoose')

3.创建约束

const Schema = mongoose.Schema
const studentSchema = new Schema({
        stuId: {
            type: String,
            required: true,
            unique: true // 唯一
        },
        name: {
            type: String,
            required: true // 必须
        },
        createTime: {
            type: Date, // 日期的类型
            default: Date.now // 创建的时候事件,推荐不使用Date.now()
        },
        Sex: {
            type: Number, // 数字类型
            default: 1 // 默认值
        },
        info: {
            type: Schema.Types.Mixed  // 任意类型都可以
        },
        hobby: [String]  // 值是这样的:hobby:['吃饭','睡觉']
})

4.构建模型对象

const studentModel = mongoose.model('集合名',studentschema)

5.连接数据库

mongoose.connect('mongodb://localhost/数据库名称', { useNewUrlParser: true, useUnifiedTopology: true })
// 监听数据库有没有打开
mongoose.connection.on('open', (err) => {
    if (err) {
        console.log(err)
        return reject(err)
    }
    console.log('数据库打开了')
    // 在这里才能操作数据库,因为这里数据库才连接完成
})

6.操作数据库

注:操作数据库必须要在连接数据库完成才能对其进行操作。所以我们需要通过mongoose.connection进行监听,证明打开后才操作数据库。

2.3 mongoose中的增删改查

注:增删改成都会有一个Promise对象返回,我们需要.then()或者await增删改查,它才去对数据库进行操作

1.添加数据

students.create({
    stuId: '417240224',
    name: 'lw11',
    Sex: 0,
    info: '7777',
    hobby: ['吃饭', '睡觉', 'chiji']
})
	.then((err, data) => {
        if (err) {
        return console.log(err)
        }
        console.log('数据写入成功', data)
	})

2.查找数据

查找数据有find()findOne()这两个方法。

第一个参数是查找条件,第二个参数是投影,如果字段名是1,则显示,0则不显示。但是只能全部是1,或者全部是0。(对于_id可以混用)

students.find({ stuId: '417240223' }, { name: 1, _id: 0 })
    .then((err, data) => {
        if (err) {
            return console.log(err)
        }
        console.log(data)
    })

3.修改数据

修改数据有:updateOne()和updateMany()`

第一个参数:查找条件 第二个参数:修改内容

 students.updateOne({ stuId: '417240223' }, { stuId: '11111111' })
     .then((err, data) => {
         if (err) {
             return console.log(err)
         }
         console.log(data)
     })

4.删除数据

删除数据有:deleteOne()``和delete Many()

第一个参数:删除条件

students.deleteOne({ stuId: '11111111' })
    .then((err, data) => {
        if (err) {
            return console.log(err)
        }
        console.log(data)
    })
})

以上方法都是模型属性的方法!!!!

2.4 mongoose的模块化编码

我们为了方便维护,和让代码更加清晰,我们把连接数据库和创建模型对象和操作数据分开来写。

1.连接数据库:在项目根目录,创建一个db目录,在里面创建index.js

const mongoose = require('mongoose')
mongoose.set('useCreateIndex', true) // 除去警告
mongoose.connect('mongodb://localhost/school', { useNewUrlParser: true, useUnifiedTopology: true })

// 暴露模块
module.exports = new Promise((resolve, reject) => {
    mongoose.connection.on('open', (err) => {
        if (err) {
            reject(err)
            return console.log(err)
        }
        console.log('数据库成功连接!')
        resolve()
    })
})

2.创建约束和模型对象:在项目根目录,创建一个Model目录,创建studentModel.js

const mongoose = require('mongoose')
const Schema = mongoose.Schema
const studentSchema = new Schema({
    stuId: {
        type: String,
        required: true,
        unique: true
    },
    name: {
        type: String,
        required: true
    },
    sex: {
        type: Number,
        default: 1,
        required: true
    },
    info: {
        type: Schema.Types.Mixed
    },
    hobby: [String]
})
module.exports = mongoose.model('student', studentSchema)

3.操作数据库:在项目根目录创建入口文件test.js

const dbPromise = require('./db')
const stuModel = require('./model/studentModel')

; (async () => {
    await dbPromise  // 等待成功连接数据库
    stuModel.find()
        .then((err, data) => {
            if (err) {
                return console.log(err)
            }
            console.log(data)
        })
})()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值