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

Koa2学习(九)与mongoDB交互的更多相关文章

  1. 【mongodb系统学习之九】mongodb保存数据

    九.mongodb保存数据: 1).插入.保存数据:insert:语法db.collectionName.insert({"key":value}),key是字段名,必须是字符串( ...

  2. Koa2学习(三)GET请求

    Koa2学习(三)GET请求 GET请求是前后端交互最常用的请求之一,常常用来进行查询操作. 那么Koa是如何接收并处理GET请求呢? 创建一个服务 // 引入Koa const Koa = requ ...

  3. Salesforce LWC学习(四) 父子component交互 / component声明周期管理 / 事件处理

    我们在上篇介绍了 @track / @api的区别.在父子 component中,针对api类型的变量,如果声明以后就只允许在parent修改,son component修改便会导致报错. sonIt ...

  4. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  5. NoSQL学习二:MongoDB基本管理命令

    MongoDB命令学习  一.MongoDB命令帮助 在安装MongoDB后,启动服务器进程(mongod),可以通过在客户端命令mongo实现对MongoDB的管理和监控: 这是MongoDB最上层 ...

  6. #学习笔记#JSP数据交互

    #学习笔记#JSP数据交互 数据库的使用方式:   当用户在第一个页面的查询框输入查询语句点提交的时候我们是用什么样的方式完成这个查询的? 答:我们通过在第一个页面提交表单的形式,真正的数据库查询时在 ...

  7. koa项目用mongoose与mongodb交互,始终报错FormModel is not defined

    koa项目用mongoose与mongodb交互,始终报错FormModel is not defined,就是自己定义的model实例始终不能找到,但是明明定义了,这时候就要看大小写了,当创建一个m ...

  8. Koa2学习(八)使用session

    Koa2学习(八)使用session koa2框架不提供session的处理方法,这里我们需要借助一个第三方中间件koa-session来处理session. 先安装插件: $ npm i koa-s ...

  9. Koa2学习(七)使用cookie

    Koa2学习(七)使用cookie Koa2 的 ctx 上下文对象直接提供了cookie的操作方法set和get ctx.cookies.set(name, value, [options])在上下 ...

随机推荐

  1. python基础知识11-文件操作

    文件 装饰器,装饰函数或者类的方法. 1.文件的基本操作 打开文件: 注意绝对路径与相对路径. path = 'text.txt' path = r'/home/pyvip/py_case/text. ...

  2. 在html借助元素特性存储信息

    背景:比如存在学生选择的CheckBox,希望在CheckBox中同时存储学生的姓名及其所在的城市,比如选择Lily所对应的CheckBox以后,可以获得Lily所在的城市“NewYork”. htm ...

  3. OI中的小智慧

    反正不会咕咕的. sort之类没+1的问题不说 双向边n*2的问题不说 变量n+5的问题不说 1.先生成后判断 (见NOIP 2016 pj t2回文日期) 这个思想在这道题体现的不明显,记得洛谷上面 ...

  4. luogu1494 [国家集训队]小Z的袜子

    #include <algorithm> #include <iostream> #include <cstdio> #include <cmath> ...

  5. InnoDB透明页压缩与稀疏文件

    此文已由作者王慎为授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. MySQL 5.7中包括了很多让人耳目一新的新特性,其中就包括了InnoDB Transparent Pag ...

  6. [codeforces724E]Goods transportation

    [codeforces724E]Goods transportation 试题描述 There are n cities located along the one-way road. Cities ...

  7. 【思维】2017多校训练七 HDU6121 Build a tree

    http://acm.hdu.edu.cn/showproblem.php?pid=6121 [题意] 询问n个结点的完全k叉树,所有子树结点个数的异或和是多少 [思路] 一棵完全K叉树,对于树的每一 ...

  8. Washing Clothes(poj 3211)

    大体题意:有n件衣服,m种颜色,某人和他的女炮一起洗衣服,必须一种颜色洗完,才能洗另一种颜色,每件衣服都有时间,那个人洗都一样,问最少用时. poj万恶的C++和G++,害得我CE了三次 /* 背包啊 ...

  9. Codeforces914E. Palindromes in a Tree

    n<=100000的树,每个点上有个字母a-t之一,问有多少这样的链经过每个点:它的某一个排列的字母串起来是回文的. 就是有最多一个字母是奇数个啦..这样点分算一波即可..细节较多详见代码 #i ...

  10. 前端学习之-- DOM

    Dom == document 1:查找 1:直接查找 document.getElementById('i1') # 根据ID获取一个标签(获取单个元素) document.getElementsB ...