乐趣区

关于前端:用户模块的增删改查接口设计

MongoDB 数据库罕用操作

MongoDB 数据库中罕用的操作包含:

  • 插入数据:应用 insertOne()或 insertMany()办法向汇合中插入数据。
  • 查问数据:应用 find()办法查问满足条件的数据。
  • 更新数据:应用 updateOne()或 updateMany()办法更新满足条件的数据。
  • 删除数据:应用 deleteOne()或 deleteMany()办法删除满足条件的数据。
  • 索引创立、删除、优化:应用 createIndex()、dropIndex()等办法实现汇合的索引操作,晋升查问效率。
  • 聚合查问:应用 aggregate()办法进行聚合查问,实现数据筛选、分组、排序、统计等简单查问操作。
  • 分页查问:通过设置 skip()和 limit()办法实现分页查问操作。
  • 数据备份和复原:应用 mongodump 和 mongorestore 等命令行工具进行数据库的备份和复原操作。
  • 数据库连贯、断开:应用 mongoshell 等客户端工具启动 MongoDB 服务器并连贯到数据库,或应用 ctrl+ c 命令敞开数据库连贯。

以上是 MongoDB 数据库中罕用的操作,利用宽泛,须要把握根本的操作语法和应用办法。

更多精彩内容,请 微信搜寻“前端爱好者 戳我 查看

MongoDB 的增删改查

MongoDB 是一个 NoSQL 型数据库,它反对相似于关系型数据库中的增删改查操作。

本文次要介绍 MongoDB 的 增删改查 操作

减少数据

insert()

MongoDB 中的数据集称为汇合(collection),你能够应用 insert() 办法向汇合中增加一条或多条文档。

例如,咱们要向名为 students 的汇合中增加一条学生信息,能够应用以下代码:

db.students.insert({
   name: "张三",
   age: 20,
   gender: "男",
   address: "北京市海淀区"
})

insertOne()insertMany()

应用 insertOne() 或者 insertMany() 办法向汇合中增加数据。

其中,

  • insertOne() 用于增加单条数据,
  • insertMany()用于增加多条数据。

示例:向名为 users 的汇合中增加一条数据。

db.users.insertOne({
    name: "张三",
    age: 28,
    sex: "男",
    phone: "13888888888"
})

MongoDB insertMany()

insertMany()是 MongoDB 中一个用于向汇合中插入多条文档的办法.

其语法格局为:

db.collection.insertMany([ <document 1> , <document 2>, ..., <document n>],
   {writeConcern: <document>}
)

其中,db.collection 示意要插入的汇合名称,[<document 1> , <document 2>, ..., <document n>]示意要插入的一组文档(以数组模式),{writeConcern: <document>}是可选参数,示意写入数据时的安全级别,用于控制数据复制和确认操作。

应用 insertMany()办法能够疾速、不便地向 MongoDB 数据库中插入多条数据,实用于数据量较大的状况。

例如,咱们能够应用以下代码向名为 users 的汇合中插入 3 条数据:

db.users.insertMany([
    {
        name: "Lucy",
        age: 22,
        sex: "female"
    },
    {
        name: "Tom",
        age: 25,
        sex: "male"
    },
    {
        name: "John",
        age: 30,
        sex: "male"
    }
])

在执行上述代码后,就会向名为 users 的汇合中插入 3 条文档数据。如果只想插入单条文档数据,能够应用 insertOne()办法。

查问数据

MongoDB 中查问数据能够应用 find() 办法。

例如,咱们要在 students 汇合中查问所有的学生信息,能够应用以下代码:

db.students.find()

在理论开发中,咱们通常会 加上查问条件

例如查问年龄为 20 的学生信息:

db.students.find({age: 20})

更新数据

update()

更新数据应用 update() 办法。

例如,咱们当初想要将姓名为“张三”的学生信息的地址更改为“上海市浦东新区”,能够应用以下代码:

db.students.update({name: "张三"},
   {$set: {address: "上海市浦东新区"}}
)

updateOne()updateMany()

应用 updateOne() 或者 updateMany() 办法批改汇合中的数据。

其中,updateOne()用于批改单条数据,updateMany()用于批改多条数据。

示例:将名为 users 的汇合中 age 属性等于 28 的数据的 name 属性改为李四。

db.users.updateOne({age: 28},{
    $set: {name: "李四"}
})

MongoDB updateMany()

updateMany()是 MongoDB 中一个用于更新汇合中多条文档的办法,

其语法格局为:

db.collection.updateMany(
   <filter>,
   <update>,
   { 
     upsert: <boolean>
     writeConcern: <document>
   }
)

其中,db.collection 示意要更新的汇合名称,<filter>示意查问要更新的条件,是一个文档类型的参数,<update>示意要更新的字段及其值,是一个文档类型的参数。

另外,upsert 是一个可选参数,如果设为 true,则会在汇合中找不到对应记录时插入一条新的记录;writeConcern 也是一个可选参数,示意写入数据时的安全级别,用于控制数据复制和确认操作。

应用 updateMany()办法能够疾速、不便地批量更新 MongoDB 数据库中的数据。

例如,咱们能够应用以下代码将名为 users 的汇合中 age 大于等于 25 的记录中的 sex 字段值为“male”更新为“man”:

db.users.updateMany({ age: { $gte: 25} },
   {$set: { sex: "man"} }
);

这条代码执行后,会将名为 users 的汇合中 age 大于等于 25 的所有文档的 sex 字段值更新为“man”。

删除数据

remove()

删除数据应用 remove() 办法。

例如,咱们想要删除名字为“张三”的学生信息,能够应用以下代码:

db.students.remove({name: "张三"})

deleteOne()deleteMany()

应用 deleteOne() 或者 deleteMany() 办法从汇合中删除数据。

其中,deleteOne()用于删除单条数据,deleteMany()用于删除多条数据。

db.users.deleteOne({name: "张三"})

示例:删除名为 users 的汇合中 name 属性等于“张三”的数据。

deleteMany()

deleteMany()是 MongoDB 中一个用于删除汇合中多条文档的办法,

其语法格局如下:

db.collection.deleteMany(
   <filter>,
   {writeConcern: <document>}
)

其中,db.collection 示意要删除数据的汇合名称,<filter>示意要删除的条件,是一个文档类型的参数。

writeConcern 是一个可选参数,示意写入数据时的安全级别,用于控制数据复制和确认操作。

应用 deleteMany()办法能够疾速、不便地批量删除 MongoDB 数据库中的数据。

例如,咱们能够应用以下代码将名为 users 的汇合中 age 大于等于 25 的记录删除:

db.users.deleteMany({age: { $gte: 25} });

这条代码执行后,会将名为 users 的汇合中 age 大于等于 25 的所有文档删除。

用户模块的增删改查

增加零碎用户

router.post('/add', async (ctx) => {let { username, pwd} = ctx.request.body
  await Users.create({username, pwd}).then(rel => {if (rel) {
      ctx.body = {
        code: 200,
        msg: '增加胜利',
        data: rel
      }
    } else {
      ctx.body = {
        code: 300,
        msg: '增加失败'
      }
    }

  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '增加时出现异常'
    }
    console.error(err)
  })

})

批改零碎用户

router.post('/update', async (ctx) => {
  let params = ctx.request.body
  await Users.updateOne({ _id: params._id},
    {username: params.username, pwd: params.pwd}
  ).then(rel => {
    ctx.body = {reslut: rel}
  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '批改时出现异常'
    }
    console.error(err)
  })
})

谬误展现

删除零碎用户

router.post('/del', async (ctx) => {let { _id} = ctx.request.body
  await Users.findOneAndDelete({_id}).then(rel => {
    ctx.body = {reslut: rel}
  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '删除时出现异常'
    }
    console.error(err)
  })
})

查问零碎用户

查问所有零碎用户

router.get('/find', async (ctx) => {await Users.find().then(rel => { 
    ctx.body = {result: rel}
  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '查问时出现异常'
    }
    console.error(err)
  })
}) 

查问单个零碎用户

router.get('/find/:id', async (ctx) => {await Users.findOne({ _id: ctx.params.id}).then(rel => {
    ctx.body = {result: rel}
  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '查问时出现异常'
    }
    console.error(err)
  })
})

module.exports = router

总结

  • 插入:insertOne 或者 insertMany;新增:create
  • 查问:find 或者 findOne
  • 更新:updateOne、updateMany、findOneAndUpdate
  • 删除:deleteOne、deleteMany、findOneAndDelete

每日一课:ES6 新增属性 第一局部

ES6(ECMAScript 2015)是 JavaScript 的一个重要的更新版本,新增了许多新性能和个性。

在 ES6 中,有一些新增的属性,包含如下:

let 和 const 申明

ES6 新减少了 let 和 const 关键字,用于申明变量和常量。

let 申明的变量的作用域为块级作用域,而且不反对变量晋升。

const 申明的常量不能被从新赋值,然而申明的对象能够批改其外部属性。

let a = 1;
const b = 2;

箭头函数

ES6 引入了箭头函数,能够更简洁地定义函数。

它的语法非常简单,应用 (参数) => {函数体} 的模式定义,能够省略掉 function 关键字和大括号。

// 传统函数定义
function add(a, b) {return a + b;}

// 箭头函数定义
var add = (a, b) => a + b;

模板字符串

ES6 中新增了模板字符串,容许在字符串中插入变量和表达式,简化了字符串的拼接操作。

应用反引号 (`) 来定义模板字符串,应用 ${expression} 插入变量或表达式。

const name = 'Tom';
const age = 20;

console.log(`My name is ${name}, and I am ${age} years old.`);

解构赋值

解构赋值容许从数组或对象中提取值,并赋值给变量。

在 ES6 中,能够应用解构赋值来疾速地提取数据。

// 解构赋值数组
const [a, b] = [1, 2];

// 解构赋值对象
const {name, age} = {name: 'Tom', age: 20};

对象的扩大

在 ES6 中,对象的定义和应用更加便捷,新增了 对象字面量 的简洁语法,反对计算属性名称,新增了 Object.assign 办法等。

// 对象字面量的简写模式
const name = 'Tom';
const age = 20;
const user = {name, age};

// 应用计算属性名称
const propName = 'age';
const user = {name: 'Tom', [propName]: 20 };

// Object.assign 办法
const obj1 = {a: 1, b: 2};
const obj2 = {b: 3, c: 4};
const obj = Object.assign({}, obj1, obj2);
退出移动版