Mongoose简介
Node是什么模型?对象模型(所有的API都是对象)
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用。
- 安装mongoose
npm install mongoose –D
- 连接数据库
使用mongoose连接数据库的前提条件是:
1、mongo数据库已经运行。
2、已经安装了mongoose包。
var mongoose = require("mongoose");
// 连接字符串格式为mongodb://主机/数据库名
mongoose.connect('mongodb://localhost/student');
上面这句的意思是连接到本地的mongodb的student表。
下面以注册接口为例记录mongoose如何操作数据库
- register接口
const express = require('express');
const user = require('../db');
// console.log(user);
const router = express.Router();
router.route('/')
.post(async(req, res, next) => {
const { username, pwd } = req.body;
const result = await user.add({ username, pwd });
// user.query();
// console.log(result);
res.render('register', {
data: JSON.stringify({
info: result.info,
status: result.status
})
});
})
.delete(async(req, res, next) => {
const { username, pwd } = req.body;
const result = await user.remove({ username, pwd });
res.render('register', {
data: JSON.stringify({
status: result.status,
info: result.info
})
});
})
.put(async(req, res, next) => {
const { username, pwd } = req.body;
const result = await user.modify({ username, pwd });
res.render('register', {
data: JSON.stringify({
status: result.status,
info: result.info
})
});
})
module.exports = router;
- 数据库的操作
/*
数据库的操作
*/
const mongoose = require('mongoose');
const HOST = '127.0.0.1';
const PORT = 27017;
const DATABASENAME = 'mydb';
//1、连接数据库
mongoose.connect(`mongodb://${HOST}:${PORT}/${DATABASENAME}`, function(err) {
if (!err) {
console.log('数据库连接成功');
} else {
console.log('数据库连接失败');
}
});
//2、定义骨架
const userSchema = new mongoose.Schema({
username: String,
pwd: String
});
//3、定义模型
const userModel = mongoose.model('users', userSchema);
//4、创建实体
// const userEntity = new userModel();
//5、增删改查
const user = {
add(data) { //增
return new Promise((resolve, reject) => {
userModel.find({}, (err, docs) => {
// console.log(docs);
const flag = docs.some(val => val.username === data.username)
if (flag) {
resolve({
status: 0,
info: '用户名已存在'
});
} else {
const userEntity = new userModel();
userEntity.username = data.username;
userEntity.pwd = data.pwd;
userEntity.save(err => {
if (!err) {
resolve({
status: 1,
info: '保存成功'
});
} else {
resolve({
status: 2,
info: '保存失败'
})
}
});
}
})
});
},
remove(data) { //删
return new Promise((resolve, reject) => {
userModel.find({ username: data.username, pwd: data.pwd }, (err, docs) => {
// console.log(docs);//json数组
if (docs.length === 0) {
resolve({
status: 0,
info: '未查到此数据'
})
} else {
var id = docs[0]._id;
userModel.findById(id, (err, docs) => {
docs.remove(err => {
if (err) {
resolve({
status: 1,
info: '删除失败'
})
} else {
resolve({
status: 2,
info: '删除成功'
})
}
})
})
}
})
})
},
modify(data) { //改
return new Promise((resolve, reject) => {
userModel.find({ username: data.username }, (err, docs) => {
if (docs.length === 0) {
resolve({
status: 0,
info: '没有此数据'
})
} else {
var id = docs[0]._id;
userModel.findById(id, (err, docs) => {
docs.pwd = data.pwd;
docs.save(err => {
if (err) {
resolve({
status: 1,
info: '修改失败'
})
} else {
resolve({
status: 2,
info: '修改成功'
})
}
})
})
}
})
});
},
query() { //查
userModel.find({}, (err, docs) => {
console.log(docs);
})
}
}
module.exports = user;

本文详细介绍Mongoose库在Node.js环境下操作MongoDB数据库的方法,包括安装、连接数据库及通过实例展示注册接口的增删改查操作。
449

被折叠的 条评论
为什么被折叠?



