下载 MongoDB
在官网下载 MongoDB,和 MongoDBCompass
创建集合并且添加数据&&集合规则校验
npm 下载 mongoose 包
然后调用 connect 链接数据库,他返回的是一个 promise 对象成功就 then 失败就 catch
创建集合要先定义集合规则
也需要调用 mongoose 的 Schema 构造函数来创建一个集合规则
mongoose.Schema({
title:{
type:String,
requird:[true,‘输入标题’],
minlength:[2,‘最小长度为 2’],
trim:true
}
})
然后再用 mongoose 的 model 函数(这个函数有两个参数第一个参数是集合的名字,第二个就是集合规则)返回一个集合的构造函数
现在构造函数有了然后直接 new 一下就有一个集合
有了集合然后就要生成数据插入数据库
然后就是生成的这条数据调用 save 方法就可以插入到数据库
也可以用 create 来插入数据
配置环境路径
找到要执行的路径在此电脑的属性找到环境变量然后再找到 path 然后添加要执行 exe 的文件路径
查询数据
就是生成的集合调用 find 方法然后.then 获取查询的结果在 find 里传一个对象就相当于查找条件,然后返回的是一个数组,findOne()返回的是数组的第一个对象
表达式查找用来查找范围
find(name:{KaTeX parse error: Expected 'EOF', got '}' at position 8: in:['']}̲) 看是否包涵 find(ea…gt:20,$lt:40})find 里面传入参数就是查询条件
find().select(‘name -id’)返回 promise 对象查询的到的是含有 name 的数据
find().sort(‘eag’) 排序
find().skip().limit()
find({eag:{$in:[‘11’]}})
删除数据
findOneAndDelete({id:‘sss’}),删除 id 为多少的数据返回的是删除项
删除多个
deleteMany(),删除多个返回的是一个对象
修改数据
updateOne({查询条件},{修改的数据})返回的是一个对象更新一个文档
updateMany({查询条件},{修改的数据})返回的是一个对象
关联数据集合
ref 来关联集合
populate 来查询集合
案例代码如下
const http = require('http')
const express = require('express')
const mongoose = require('mongoose')
// express需要bodyparser中间件
const bodyParser = require('body-parser')
const url = require('url')
const app = express()
app.use(bodyParser.urlencoded({ extended: false }))
let _id = null
app.get('/list', async (req, res) => {
const users = await User.find()
let list = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<button><a href="/add">添加用户</a></button>
<table border="1">
<tr>
<th>用户名</th>
<th>年龄</th>
<th>爱好</th>
<th>邮箱</th>
<th>密码</th>
<th>操作</th>
</tr>
`
users.forEach(item => {
list += ` <tr>
<td>${item.name}</td>
<td>${item.eag}</td>
<td>${item.hobbies.join('')}</td>
<td>${item.email}</td>
<td>${item.password}</td>
<td><a href="/modify?id=${item._id}">编辑</a>,<a href="/delete?id=${item._id}">删除</a></td>
</tr>`
})
list += `
</table>
</body>
</html>`
res.send(list)
})
app.post('/add', async (req, res) => {
// console.log(req.body);
await User.create(req.body)
res.writeHead(301, {
Location: '/list'
})
res.send()
})
app.post('/update', async (req, res) => {
await User.updateOne({ _id }, req.body)
res.writeHead(301, {
Location: '/list'
})
res.send()
})
app.get('/add', (request, rep) => {
let add = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<h1>添加用户</h1>
<form action="/add" method="post">
用户名
</br>
<input type="text" name="name" />
</br>
</br>
密码
</br>
<input type="text" name="password" />
</br></br>
年龄
</br>
<input type="text" name="eag">
</br>
</br>
邮箱
</br>
<input type="text" name="email">
</br>
</br>
请选择爱号
<input type="checkbox" name="hobbies" id="" value="足球">足球<input type="checkbox" name="hobbies" id="" value="篮球">篮球<input type="checkbox" name="hobbies" id="" value="看美女">看美女<input type="checkbox" name="hobbies" id="" value="看少妇">看少妇<input type="checkbox" name="hobbies" id="" value="看蛇">看蛇
</br>
<input type="submit" value="提交">
</form>
</body>
</html>`
rep.send(add)
})
app.get('/modify', async (request, rsp) => {
const { id } = request.query
_id = id
let obj = await User.findOne({ _id: id })
obj.hobbies
let arr = ['足球', '篮球', '看美女', '看少妇', '看蛇']
let modify = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<h1>修改用户信息</h1>
<form action="/update" method="post" >
用户名
</br>
<input type="text" name="name" value="${obj.name}"/>
</br>
</br>
密码
</br>
<input type="text" name="password" value="${obj.password}"/>
</br></br>
年龄
</br>
<input type="text" name="eag" value="${obj.eag}">
</br>
</br>
邮箱
</br>
<input type="text" name="email" value="${obj.email}">
</br>
</br>
请选择爱号
`
arr.forEach(items => {
let flag = true
obj.hobbies.forEach(val => {
if (items == val) {
flag = false
modify += `<input type="checkbox" checked name="hobbies" id="" value="${items}">${items}`
}
})
if (flag) {
modify += `<input type="checkbox" name="hobbies" id="" value="${items}">${items}`
}
})
modify += `</br><input type="submit" value="提交">
</form>
</body>
</html>`
rsp.send(modify)
})
app.get('/delete', async (req, rsp) => {
await User.findOneAndDelete({ id: _id })
rsp.writeHead(301, {
Location: '/list'
})
rsp.send()
})
app.listen(3000)
// 连接数据库
mongoose.connect('mongodb://localhost/pai', { useUnifiedTopology: true, useNewUrlParser: true }).then(() => {
console.log('连接成功');
}).catch(() => {
console.log('连接失败');
})
const UserSchema = mongoose.Schema({
name: {
type: String,
required: true,
minlength: 2,
maxlength: 10
},
eag: {
type: Number,
min: 18,
max: 80
},
password: String,
email: String,
hobbies: [String]
})
const User = new mongoose.model('User', UserSchema)