Koa2学习(九)与mongoDB交互

数据库下载与安装

windows下载地址:http://dl.mongodb.org/dl/win32/x86_64

linux下载地址:https://www.mongodb.com/download-center#community

安装教程略

数据库驱动

node.js要与mongo交互,需要安装mongodb驱动。

npm i mongodb --save

mongoose则是node.js中一个非常流行的对mongodb驱动的封装,内部已经实现了连接池,ORM等功能,对开发人员十分的友好。我们也用mongoose来学习操作mongoDB

安装mongoose

npm i mongoose --save

数据库操作

在业务比较复杂的情况下,整个项目应该有一个合理的分层数据流程:

  1. 引入依赖库 -> 连接数据库
  2. 定义模型model(最好写在model目录下)
  3. 一系列业务逻辑 -> 生成实体对象 -> 一系列业务逻辑(最好写在controller下)-> 对数据库进行curd
  4. 定义路由 -> 访问控制器(最好写在routes目录下)

现在以一个特别简单的插入操作来学习:

http.js

const Koa = require('koa')
const app = new Koa()
const mongoose = require('mongoose')
// 连接数据库:[ip/域名]:[端口号(默认27017)]/[数据库(db)]
mongoose.connect('mongodb://localhost:27017/test')
// 定义模型
const Cat = mongoose.model('Cat', { name: String }) app.use(async () => {
// 实例化一个实体对象
const kitty = new Cat({ name: 'Zildjian' })
// 执行插入操作
const res = await kitty.save()
// 打印返回结果
console.log(res)
}) app.listen(8000) module.exports = app

模拟测试

  1. 启动服务:
node http.js
  1. 浏览器访问:localhost:8000
  2. node控制台查看执行结果(有数据返回说明插入成功):
{ _id: 5b3b2e074452fb32a448eda7, name: 'Zildjian', __v: 0 }
  1. 登陆数据库查看数据(本例以mongo命令行工具为例):
use test
# switched to db test
show collections
# cats
db.cats.find()
# { "_id" : ObjectId("5b3b2e074452fb32a448eda7"), "name" : "Zildjian", "__v" : 0 }

可以看到数据已经插入数据库。

更多操作

需要了解更多的数据库操作,请访问mongoose官方文档:

http://mongoosejs.com/docs/queries.html

最新文章

  1. [LeetCode] Unique Substrings in Wraparound String 封装字符串中的独特子字符串
  2. Surface与SurfaceView、SurfaceHolder
  3. PyInstaller 安装方法 及简单的编译exe (python3)
  4. linq to entity中遇到的问题
  5. envi5.1下载地址
  6. POJ_3111_K_Best_(二分,最大化平均值)
  7. ie6里png图片不透明
  8. 基于MEF的插件框架之总体设计
  9. JAVA的Executor框架
  10. Android中代码运行指定的Apk
  11. js函数式编程术语总结 - 持续更新
  12. jenkins部署安装
  13. 让EntityFramework.Extended支持MySql
  14. ssh连接虚拟机centos
  15. 多目标遗传算法 ------ NSGA-II (部分源码解析) 实数、二进制编码的变异操作 mutation.c
  16. Hiero扩展工具包开发小结
  17. docker 查看容器的网络连接
  18. java Fork/Join框架
  19. springdata----->spring集成redis(一)
  20. 解决$ go get google.golang.org/grpc上的包被墙的问题

热门文章

  1. configparser ,subprocess , xlrd ,xlwt 模块
  2. 数据结构( Pyhon 语言描述 ) — — 第2章:集合概览
  3. Sql按照字段分组,选取其他字段最值所在的行记录
  4. [数据结构]C#基于数组实现泛型顺序表
  5. 初识Web框架
  6. python接口自动化-multipart/form-data上传图片
  7. python012 Python3 编程第一步
  8. Codeforces936C. Lock Puzzle
  9. Codeforces914E. Palindromes in a Tree
  10. Python()- 面向对象三大特性----继承