tip:最好都用上async 和 await,防止异步执行。

示例:
  1. router.get("/m1/delete",async ctx=>{
  2. let {id} = ctx.query;
  3. console.log(id);
  4. await MembersModel.remove({
  5. _id:id
  6. });
  7. ctx.redirect("/");
  8. })

3.1 设计Schema发布model

  1. var mongoose = require('mongoose')
  2. var Schema = mongoose.Schema
  3. //1.连接数据库
  4. //指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来
  5. mongoose.connect('mongodb://localhost/itcast')
  6. //2.设计集合结构(表结构)
  7. //字段名称就是表结构中的属性名称
  8. //约束的目的是为了保证数据的完整性,不要有脏数据
  9. // var blogSchema = new Schema({
  10. // title: String,
  11. // author: String,
  12. // body: String,
  13. // comments: [{ body: String, date: Date }],
  14. // date: { type: Date, default: Date.now },
  15. // hidden: Boolean,
  16. // meta: {
  17. // votes: Number,
  18. // favs: Number
  19. // }
  20. // });
  21. var userSchema = new Schema({
  22. username:{
  23. type:String,
  24. required:true //必须有
  25. },
  26. password:{
  27. type:String,
  28. required:true
  29. },
  30. email:{
  31. type:String
  32. }
  33. })
  34. //3.将文档结构发布为模型
  35. //mongoose.model方法就是用来将用一个架构发布为model
  36. //第一个参数:传入一个大写名词单数字符串用来表示数据库名称
  37. // mongoose会自动将大写名词的字符串生成 小写复数 的集合名称
  38. // 例如这里的 User 最终会变成 users 集合名称
  39. //第二个参数:架构 Schema
  40. //返回值:模型构造函数
  41. //var Blog = mongoose.model('Blog', blogSchema);
  42. var User = mongoose.model('User', userSchema);
  43. //4.有了模型构造函数以后,使用这个构造函数对 users 集合中的数据进行操作(增删改查)

3.2 增加数据

  1. var admin = new User({
  2. username:'admin',
  3. password:'123456',
  4. email:'admin@admin.com'
  5. })
  6. admin.save(function(err,ret){
  7. if(err){
  8. console.log('保存失败')
  9. } else {
  10. console.log('保存成功')
  11. console.log(ret)
  12. }
  13. })

3.3 查询

查询所有:

  1. //查询所有记录,如果中间有改过数据,会把更改前后的数据都给显示出来
  2. User.find(function(err,ret){
  3. if(err){
  4. console.log('查询失败')
  5. } else {
  6. console.log(ret)
  7. }
  8. })

按条件查询所有:

  1. User.find({username:'admin'},function(err,ret){
  2. if(err){
  3. console.log('查询失败')
  4. } else {
  5. console.log(ret)
  6. }
  7. })

按条件查询单个:

  1. //只查询一个,显示的是对象{},不是数组[]
  2. //不带条件的话,显示第一个对象,一般都会带条件的
  3. User.findOne({username:'admin'},function(err,ret){
  4. if(err){
  5. console.log('查询失败')
  6. } else {
  7. console.log(ret)
  8. }
  9. })

3.4 删除数据

  1. User.remove({
  2. username:'admin'
  3. },function(err,ret){
  4. if(err){
  5. console.log('删除失败')
  6. } else {
  7. console.log('删除成功')
  8. console.log(ret)
  9. }
  10. })

3.5 跟新数据

根据条件更新所有:

  1. Model.update(conditions,doc,[options],[callback])
  2. 1

根据指定条件更新一个:

  1. Model.findOneAndUpdate([conditions],[update],[options],[callback])
  2. 1

根据id更新一个:

  1. User.findByIdAndUpdate('5c9069fecf8c820fccb64d9c',{
  2. password:'123'
  3. }, function (err,ret) {
  4. if(err) {
  5. console.log('更新失败')
  6. } else {
  7. console.log('更新成功')
  8. }
  9. })