05_node.js-MongoDB命令、数据库操作步骤

1、MongoDB命令

  • db.webs.find().sort({age:-1})降序
  • db.webs.find().skip(2)从下标为2开始
  • db.webs.find().limit(2)从开始到2结束
    • sort()的优先级比skip和limit高
      所以无论书写先后,都是先排序

2、node是什么模型?

——对象模型

3、express中req,body失效问题

  • post方法在express中是通过req,body来获取前端发来的数据,但是这个req,body有时会失效,因为高版本的express生成器会自动配置一个body-parser的中间件,低版本就要手动配置;
  • 失效时去npmjs官网搜body-parser,然后安装

4、数据库操作步骤:

1、连接数据库

	mongoose.connect(`mongodb://${HOST}:${PORT}/${DATABASE}`, (error) => {
	    if (error) {
	        console.log("数据库连接失败!");
	    } else {
	        console.log("数据库连接成功!");
	    }
	})

2、定义骨架

	const schema = new moongo.Shcema

3、定义模型

	const userModel = mongoose.model("users",userSchema)

4、创建实体

	const userEntity = new userModel()

5、增删改查

	const user = {
    add(data) {
        return new Promise((resolve, reject) => {
            userModel.find({}, (error, docs) => {
                const flag = docs.some(item => data.username === item.username)
                if (flag) {
                    resolve({
                        info: "用户名已存在",
                        status: 0
                    });
                } else {
                    const userEntity = new userModel();
                    userEntity.username = data.username;
                    userEntity.password = data.password;
                    userEntity.save((error) => {
                        if (error) {
                            resolve({
                                info: "保存失败",
                                status: 2
                            });
                        } else {
                            resolve({
                                info: "保存成功",
                                status: 1
                            });
                        }
                    })
                }
            });
        })
    },
    remove(data) {
        return new Promise((resolve, reject) => {
            userModel.find({
                username: data.username,
                password: data.password
            }, (error, docs) => {
                if (docs.length) {
                    var id = docs[0]._id;
                    userModel.findById(id, (error, doc) => {
                        doc.remove(error => {
                            if (error) {
                                resolve({
                                    info: "删除失败",
                                    status: 2
                                })
                            } else {
                                resolve({
                                    info: "删除成功",
                                    status: 1
                                })
                            }
                        })
                    })
                } else {
                    resolve({
                        status: 0,
                        info: "数据库中不存在这条数据"
                    })
                }
            })
        });
    },
    modify(data) {
        return new Promise((resolve, reject) => {
            userModel.find({
                username: data.username
            }, (error, docs) => {
                if (docs.length) {
                    var id = docs[0]._id;
                    userModel.findById(id, (error, doc) => {
                        doc.password = data.password;
                        doc.save(error => {
                            if (error) {
                                resolve({
                                    info: "修改失败",
                                    status: 2
                                })
                            } else {
                                resolve({
                                    info: "修改成功",
                                    status: 1
                                })
                            }
                        })
                    })
                } else {
                    resolve({
                        status: 0,
                        info: "数据库中不存在这条数据"
                    })
                }
            })
        })
    }
}

6、导出模型

	module.exports = users;

5、底层数据外用:

  • 底层new Promise((resolve,reject)=>{})
  • 外层结合async 和 await
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值