美文网首页工作生活
moogoose的简单使用与增删改查

moogoose的简单使用与增删改查

作者: Tme_2439 | 来源:发表于2019-07-01 16:55 被阅读0次

初始化model

在根目录创建models文件夹,用于存放mongodb的模型一个个文件
以users举例:
1、先创建一个model出来并导出:
const mongoose = require('mongoose') // 引入mongoose
const Schema = mongoose.Schema // 引入schema(计划),可以理解计划一个模型(model)

const UserSchema = new Schema ({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    avatar: {
        type: String,
        required: false,
        default: '//1.gravatar.com/avatar/767fc9c115a1b989744c755db47feb60?s=200&r=pg&d=mp'
    },
    date: {
        type: String,
        required: false,
        default: Date.now() // default可以是一个函数,但是要return出来
    },
})

// model接受两个参数,表名和schema
module.exports = User = mongoose.model('users', UserSchema)
2、引入model模块,新增一个用户,并加密密码存储到数据库中:
// login and register
const express = require('express')
const router = express.Router()
const User = require('../../models/User.js') // 引入上面定义的模型
// 引入加密
const bcrypt = require('bcrypt')

router.post('/register', (req, res) => {
    User.findOne({email: req.body.email})
        .then((result) => {
            if (result) {
                return res.status(200).json({code: 1, msg: '该邮箱已被注册!'})
            }else{
                // new User执行完成后存储在mongoose的虚拟内存中,并没存入到数据库中,需要调用newUser实例的save()方法!!!
                const newUser = new User({
                    name: req.body.name,
                    email: req.body.email,
                    password: req.body.password
                })
                bcrypt.genSalt(10, (err, salt) => { // params(10加密级别,回调)
                    bcrypt.hash(newUser.password, salt, (err, hash) => {// params:(需要加密的数字,salt固定回调,回调)
                        if (err) {
                            throw err
                        }else{
                            newUser.password = hash // hash为加密后的密码
                            // 调用mongoose提供的保存方法,返回的是promise对象
                            newUser.save()
                                    .then((userInfo) => {
                                        console.log(`注册成功:${userInfo}`)
                                        res.json(userInfo)
                                    })
                                    .catch((error) => {
                                        console.log(`注册失败:${error}`)
                                        res.json(error)
                                    })
                        }
                    })
                })

            }
        })
        .catch((error) => {
            console.log(`数据库未连接或出错:${error}`)
        })
})
module.exports = router // 导出模块,在app.js中可以使用express中间件调用
3、删除用户:
// 删
router.post('/deleteUser', (req, res) => {
    let email = req.body.email
    User.deleteOne({
        email
    }).then((data) => {
        console.log(data)
        if(data.deletedCount === 1) return res.json({code: 0, msg: '删除成功'})
        if(data.n === 0) return res.json({code: -1, msg: '用户不存在'})
        res.json({code: -1, msg: '删除失败'})
    })
})
4、修改用户:
// 改
router.post('/updateUser', (req, res) => {
    let newName = req.body.name
    let email = req.body.email
    User.update({
        email
    },{
        name: newName
    }).then((data) => {
        console.log(data)
        if (data.nModified === 1) return res.json({code: 0, msg: '修改成功'}) // 修改成功
        if (data.n === 0) return res.json({code: -1, msg: '用户不存在'}) // 查询条数为0
        res.json({code: -1, msg: '错误,请检查后台代码'})
    })
})
5、查找用户:
// 查
router.post('/getUserList', (req, res) => {
    let serachText = req.body.serachText
    let reg = new RegExp(serachText) // 设置正则,支持模式查询
    console.log(reg)
    User.find({name: reg}, {password: 0}) // 第一个参数为查询条件,第二个为data限制显示字段,为0不返回,为1则返回
        .then((data) => {
            console.log(data)
            res.send({code: 0, total: data.length, list: data})
        })
})

相关文章

  • moogoose的简单使用与增删改查

    初始化model 在根目录创建models文件夹,用于存放mongodb的模型一个个文件 以users举例: 1、...

  • Swift中CoreData的基本用法

    前几天看了一下CoreData的增删改查,于是试着在demo里面加进去使用 增 删 改 查

  • mysql的插入语句

    MySQL增删改查之增insert、replace

  • 《SQL学习指南》读书笔记

    由于之前在学校使用的SQL语句都是简单的增删改查,但简单的增删改查很难完成工作需求,同时也要兼顾性能需求,所以因为...

  • MYSQL数据库的增删改查

    MYSQL数据库的增删改查 一.对于库的增删改查 增create database 库名称;create data...

  • swift3.0 coreData的基本使用,简单实现增删改查

    三步走完,上代码,简单实现增删改查1.增 2.删 3.改 4.查 demo: https://github.com...

  • 课程管理系统

    使用node实现简单的增删改查 一.handlebars模板引擎的使用 handlebars的安装 handleb...

  • 关于python的list的增查删改

    说到增查删改,想起了数据库,我们在关系型数据库当中就会对表进行增查删改。 在python当中我们也可以对list进...

  • 0812 A

    mongodb 增删改查 增: db.createCollection("name", {options:numb...

  • 增删改

    对于表中的操作,就是增删改查,查内容较多,这里先说增删改。 1.增(insert或者load) 即插入数据,多行插...

网友评论

    本文标题:moogoose的简单使用与增删改查

    本文链接:https://www.haomeiwen.com/subject/qpygcctx.html