Mongoose的操作流程 @stage3---week1--day2

Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用。

官方文档:https://www.npmjs.com/package/mongoose
http://mongoosejs.com/

Mongoose的操作流程(重点中的重点)

1.安装mongoose

cnpm install mongoose -g

2.连接数据库

使用mongoose连接数据库的前提条件是

  • mongo数据库已经运行。
  • 已经安装了mongoose包
const mongoose = require("mongoose");
// 连接字符串格式为mongodb://主机/数据库名

mongoose.connect('mongodb://localhost/student);
//	上面这句的意思是连接到本地的mongodb的student表。
mongoose.connect(`mongodb://127.0.0.1:27017/${DBNAME}`, err => {
            if (err) console.log(err)
            else console.log(`The db is connected Successfully`);
        });

存储数据步骤:定义Schema (骨架) > 创建model(模型)> Entity实例化方法。

  • Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 钱的电板
  • Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 钱的样板
  • Entity : 由Model创建的实体,他的操作也会影响数据库 钱
//1.定义Schema (骨架)
var Schema = mongoose.Schema;
//通过Schema创建一个模式NewsSchema  
var studentSchema  = new Schema({      
     name: String,
     age: String
});
     
//2. 创建model(模型)
//通过模式studentSchema  创建一个模型studentModel 
var studentModel = mongoose.model("students",studentSchema  );

//3.Entity实例化方法

var instance1 = new studentModel (); 

mongoose的具体操作

model 查重逐句

下面find第一个参数{}里面为空,表示查询所有的数据:
docs表示查询的结果集合,可用于渲染ejs模板引擎。

// '通过数据库的查询来完成判断'
userModule.find({}, (error, docs) => {
    // console.log( docs )// 数组,数组中放着我们所有的存储的数据

    const user = new userModule(data);
    if (docs.length) { //当数据库中有数据时
        if (docs.some(item => item.username === data.username)) { //当在数据库中匹配到收到的数据时,说明用户名重复了
            resolve({
                info: '用户名已重复',
                status: 0
            })
        } else { //此时可以存储用户信息
            user.save(err => {
                if (err) {
                    resolve({
                        info: err,
                        status: 1
                    })
                } else {
                    resolve({
                        info: '用户注册成功',
                        status: 2
                    })
                }
            })
        }
    } else { //当数据库中没有数据时,直接存储
        user.save(err => {
            if (err) {
                resolve({
                    info: err,
                    status: 1
                })
            } else {
                resolve({
                    info: '用户注册成功',
                    status: 2
                })
            }
        })
    }
});

实例新增数据

通过save方法保存

user.save(err => {
    if (err) {
        resolve({
            info: err,
            status: 1
        })
    } else {
        resolve({
            info: '用户注册成功',
            status: 2
        })
    }
})

实例修改数据

修改数据的思路:先把对应id的数据查询出来,对需要修改的字段重新赋值,然后执行save方法保存。

userModule.find({}, (err, docs) => {
    if (docs.length) {
        docs.map(item => {
            if (item.username === data.username) {
                userModule.findById(item._id, (err, doc) => {
                    doc.password = data.newPassword
                    doc.save(error => {
                        if (error) {
                            resolve({
                                info: '修改失败了',
                                status: 0
                            })
                        } else {
                            resolve({
                                info: '密码修改成功',
                                status: 1
                            })
                        }
                    })
                })
                return
            }
        })
    }
})

删除数据

思路:

1、删除数据首先要知道删除哪一条信息,需要知道信息的id.
2、把对应id的数据查询出来,执行remove方法

userModule.find({}, (err, docs) => {
    if (docs.length) {
        //集合有数据
        docs.map(item => {
            if (item.username === data.username) {
                userModule.findById(item.id, (error, doc) => {
                    doc.remove((error) => {
                        if (error) {
                            resolve({
                                info: '删除失败了',
                                status: 0
                            })
                        } else {
                            resolve({
                                info: '删除成功',
                                status: 1
                            })
                        }
                    })
                })
            }
        })
    }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值