13赞
286
当前位置:  开发笔记 > 编程语言 > 正文

Koa2学习(九)与mongoDB交互

Koa2学习(九)与mongoDB交互数据库下载与安装windows下载地址:http:dl.mongodb.orgdlwin32x86_64linux下载地址:https:

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。


推荐阅读
  • Django 【第二十篇】后端CORS解决跨域问题
    一、为什么会有跨域问题?是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,像是一般的href属性,a标签什么的都不拦截。二、解决跨域问题的两种方式JS ... [详细]
  • MVC4 前后台数据交互问题
    想要实现的功能:有一张用户表,想要管理此用户表(暂且只查询--分页查询)查询用户表并将其显示在页面上,10条记录分一页。大致如下(python实现的,布吉岛怎么在winserver部署, ... [详细]
  • 如何解决《单元测试自定义WebAPIAuthorizeAttribute》经验,需要怎么解决? ... [详细]
  • 如何解决《使用FromUri绑定没有参数名称前缀的对象》经验,为你挑选了1个好方法。 ... [详细]
  • as运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回null值。如下面的代码所示,如果object引用实 ... [详细]
  • 如何解决《远程调试.NETCoreLinuxDocker容器-"当前源与.dll中内置的版本不同"》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《在不等待ASP.NETMVC的情况下启动异步任务的两种方法之间的差异》经验,为你挑选了1个好方法。 ... [详细]
  • 看pyconchina2015有感+突然想起django to do list中的一点事
    今儿上午在慕课网上观看了PyConChina-2015的视频,感觉每个给我的触动都挺大的。其中美团网分享的他们用python开发所用的技术和遇到的问题给我印象挺深,那就是原来pyt ... [详细]
  • ubuntu16.04下basler工业相机的配置与使用
    本帖旨在記錄一下在Ubuntu16.04下配置basler工業相機pylonsdk,以及結合opencv進行CMake配置使用的一些事項。1.Prerequisite ... [详细]
  • jqBash,unfortunately,doesn’tshipwithacommandthatcanworkwithJSONnatively.Inthislesson,we’ll ... [详细]
  • eg:把当前系统使用率最高的前10个命令的命令名输出,并统计命令使用的次数。awk‘{comm[$1]++}END{for(iincomm){printi,comm[i]}}‘ro ... [详细]
  • 一、静态文件:1、静态文件夹的创建:在项目总目录下手动新建一个static文件夹(非限定名称,约定如此),后续项目需要用到的静态文件都存于该文件夹内,其中可以再划分多个子文件夹来更 ... [详细]
  • 开发工具与关键技术:VS  ,  ASP.NET.MVC;作者:吴维杰撰写时间:2019.04.29 数据库的编程基础:增,删,查,改,是在我所学的这个项目中用的最多的,它们百变不 ... [详细]
  • Docker(六)Docker Swarm
    实践中会发现,生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行。然而,面对Kubernetes,Mesos以及Swarm等众多容器集群系统,我们该如何选 ... [详细]
  • 本文主要为大家分享一篇使用Ajax更新ASP.NetMVC项目中的报表对象方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。Ajax技术显著加 ... [详细]
author-avatar
大美妞meilei
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有