node.js 操作mongodb

下载 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)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值