数据库:

Mongo[非关系型数据库]

  1. docker pull mongo:latest
  2. //--auth指的是登录需要用户名和密码
  3. docker run -itd --name mongo -p 27017:27017 mongo --auth
  4. //进入数据库容器
  5. docker exec -it mongo mongo admin
  6. //创建用户
  7. db.createUser({user:'admin',pwd:'admin',roles:[{ role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
  8. //验证是否能成功连接 ,返回1则成功
  9. db.auth('admin','admin');
  • 使用navcat连接的过程中一直报错:No suitable servers found,参数都是正确的,但是一直报错

原因:docker容器映射的27017端口没开,导致连接失败

  • 插入数据的时候报错: ```sql

    db.todos.insert({“title”:”task1”}) WriteCommandError({

    1. "ok" : 0,
    2. "errmsg" : "command insert requires authentication",
    3. "code" : 13,
    4. "codeName" : "Unauthorized"
    5. })
  1. 原因:没有使用db.auth(用户名,密码)命令登录
  2. 命令:
  3. | show dbs | 展示所有数据库 |
  4. | --- | --- |
  5. | db | 展示当前所在数据库 |
  6. | use 数据库名 | 切换到指定数据库,如果没有的话直接创建 |
  7. | db.auth(用户名,密码) | 登录,必须在use admin之后进行登录 |
  8. | db.集合名【mysql中的表】.insert({json数据}) | 往集合里添加数据 |
  9. | db.集合名.find() | 显示集合下的所有数据 |
  10. | db.集合名.findOne() | 显示集合下的第一条数据 |
  11. | db.集合名.drop() | 删除当前集合 |
  12. | db.dropDatabase() | 删除当前数据库[一般不用] |
  13. | db.集合名.remove({条件}) | 删除集合中的文件数据 |
  14. 批量插入:使用insert,不过参数是一个数组<br />修改数据:update修改器
  15. ```sql
  16. //修改值
  17. db.workmate.update({"name":"MinJie"},{"$set":{"skill.skillThree":'word'}})
  18. //删除字段
  19. db.workmate.update({"name":"MinJie"},{$unset:{"age":''}})
  20. //值计算
  21. db.workmate.update({"name":"MinJie"},{$inc:{"age":-2}})
  22. //插入一列多行
  23. db.workmate.update({},{$set:{interset:[]}},{multi:true})
  24. //如果该条数据不存在,就新插入
  25. db.workmate.update({name:'xiaoWang'},{$set:{age:20}},{upsert:true})

后端:

mongoose:

schema:用来定义表的模板,实现和MongoDB数据库的映射,key-value的json数据

  1. String :字符串类型
  2. Number :数字类型
  3. Date 日期类型
  4. Boolean 布尔类型
  5. Buffer NodeJS buffer 类型
  6. ObjectID 主键,一种特殊而且非常重要的类型
  7. Mixed :混合类型
  8. Array :集合类型

Model:具备表操作能力的一个集合,是Mongoose的核心能力
entity:类似record,由model创建的实体

Koa:

【注意】
postman的post请求参数名和参数值都必须使用双引号,不加或加单引号都会导致bad request


todo - 图1