日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

koa2 mysql增删改查_koa2对mongodb的增删改查

發(fā)布時間:2024/9/27 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 koa2 mysql增删改查_koa2对mongodb的增删改查 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

構(gòu)建項目

npm install -g koa-generator

koa2 -e projectname

npm install mongoose

說明:我們用mongoose來操作mongodb,需要安裝mongoose。生成項目后,在項目里新建一個文件夾dbs,用來存放和數(shù)據(jù)庫相關(guān)的配置文件,配置文件config.js聲明數(shù)據(jù)庫的配置選項,里面再創(chuàng)建一個models文件夾,存放模型文件,目錄結(jié)構(gòu)如下

image.png

config.js

module.exports = {

dbs:'mongodb://127.0.0.1:27017/dbs'

}

說明:在mongodb中創(chuàng)建一個數(shù)據(jù)庫,為dbs

person.js

const mongoose = require('mongoose')

let personSchma = new mongoose.Schema({

name:String,

age:Number

})

module.exports = mongoose.model('Person',personSchma)

說明:利用mongoose操作mongodb,需要引入這個模塊。首先我們要用mongoose提供的schema方法聲明一個模式,也就是描述存放的數(shù)據(jù)的字段和字段類型,接著再通過這個模式創(chuàng)建一個模型,這個模型封裝了一些操作數(shù)據(jù)庫的方法,我們需要把模型導(dǎo)出來供我們使用。

app.js

const Koa = require('koa')

const app = new Koa()

const views = require('koa-views')

const json = require('koa-json')

const onerror = require('koa-onerror')

const bodyparser = require('koa-bodyparser')

const logger = require('koa-logger')

//操作數(shù)據(jù)庫我們需要這樣,引入這兩個模塊哦

const mongoose = require('mongoose')

const dbConfig = require('./dbs/config')

const index = require('./routes/index')

const users = require('./routes/users')

// error handler

onerror(app)

// middlewares

app.use(bodyparser({

enableTypes:['json', 'form', 'text']

}))

app.use(json())

app.use(logger())

app.use(require('koa-static')(__dirname + '/public'))

app.use(views(__dirname + '/views', {

extension: 'ejs'

}))

// logger

app.use(async (ctx, next) => {

const start = new Date()

await next()

const ms = new Date() - start

console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)

})

// routes

app.use(index.routes(), index.allowedMethods())

app.use(users.routes(), users.allowedMethods())

//mongoose

mongoose.connect(dbConfig.dbs,{

useNewUrlParser:true

})

// error-handling

app.on('error', (err, ctx) => {

console.error('server error', err, ctx)

});

module.exports = app

添加的代碼是

const mongoose = require('mongoose')

const dbConfig = require('./dbs/config')

//mongoose

mongoose.connect(dbConfig.dbs,{

useNewUrlParser:true

})

說明:在app.js中引入mongoose和數(shù)據(jù)庫的配置文件config.js,然后連接dbs數(shù)據(jù)庫,傳遞進去的參數(shù)就是config.js文件里的dbs的值。

到這里,我們就連接上數(shù)據(jù)庫了,接下來,就編寫接口操作數(shù)據(jù)庫。

編寫增刪改查數(shù)據(jù)的接口

在router文件夾下的user.js中編寫接口

const router = require('koa-router')()

//要操作數(shù)據(jù)庫了,之前我們在models里面根據(jù)描述創(chuàng)建了模型

//現(xiàn)在根據(jù)模型我們實例化一個表出來

//那我們需要在這個接口文件中,引進我們創(chuàng)建的模型,就是person文件啦

//再說一遍,schema描述表的字段,moudle里面有增刪改查的操作

const Person = require('../dbs/models/person')

router.prefix('/users')

router.get('/', function (ctx, next) {

ctx.body = 'this is a users response!'

})

router.get('/bar', function (ctx, next) {

ctx.body = 'this is a users/bar response'

})

//新建一個用來操作數(shù)據(jù)庫的接口

router.post('/addPerson',async function(ctx){

//創(chuàng)建這個模型的實例啦

const person = new Person({

//通過post請求得到的body里的數(shù)據(jù),添加到數(shù)據(jù)庫

name: ctx.request.body.name,

age: ctx.request.body.age

})

// //保存這條數(shù)據(jù)哦

// await person.save()

// //返回這個操作的狀態(tài)看看,不能總是0

// ctx.body = {

// code:0

// }

//換一種寫法,我們需要捕獲一下異常

let code

try {

//save方法是模型封裝好的,實例可以調(diào)用這個方法

await person.save()

code = 0

} catch (error) {

code = -1

}

ctx.body = {

code:code

}

})

router.post('/getPerson',async function(ctx) {

const result = await Person.findOne({name:ctx.request.body.name})

const results = await Person.find({name:ctx.request.body.name})

ctx.body = {

code:0,

result,

results

}

})

router.post('/updatePerson',async function(ctx) {

const result = await Person.where({

name:ctx.request.body.name

}).update({

age:ctx.request.body.age

})

ctx.body = {

code:0

}

})

router.post('/removePerson',async function(ctx) {

const result = await Person.where({

name:ctx.request.body.name

}).remove()

ctx.body = {

code:0

}

})

module.exports = router

測試方法:安裝postman,填寫我們接口的地址,根據(jù)情況選擇請求方式,這里是post,還要注意的一點是,user.js里的接口還有一個前綴,也就是文件中的router.prefix('/users'),它的前綴就是/users。

測試getPerson的接口如下

image.png

數(shù)據(jù)庫如下

image.png

總結(jié):

mudels下的person.js對應(yīng)的就是我們建的表,我們是通過mongoose操作數(shù)據(jù)庫的,并不是mongodb原生的api,因此我們要引入這個mongoose。接著,通過mongodb提供的schema創(chuàng)建一個描述,是描述這個數(shù)據(jù)表的,這樣,數(shù)據(jù)表就有字段了。但還不能操作它,現(xiàn)在我們需要通過這個描述,創(chuàng)建一個模型,模型里面有封裝好的操作數(shù)據(jù)庫的一些方法。model在這里就相當(dāng)于一個橋梁,它既關(guān)聯(lián)著數(shù)據(jù)表的描述,又關(guān)聯(lián)著數(shù)據(jù)庫。最終要完成實際操作的,還是要由實例來完成。因此,在我們編寫接口的文件中,引入mongoose和模型,并且通過模型創(chuàng)建一個實例出來,就可以在接口操作數(shù)據(jù)啦。

總結(jié)

以上是生活随笔為你收集整理的koa2 mysql增删改查_koa2对mongodb的增删改查的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美激情一区二区三区免费观看 | 午夜精品一区二区三区在线视频 | 亚洲一区二区观看播放 | 午夜激情在线观看 | se婷婷 | 香蕉视频黄在线观看 | 久久免费国产精品 | 动漫同人高h啪啪爽文 | www.97超碰| 色吧av色av | 中国老妇性视频 | av无遮挡| 一级淫片免费 | 黄色不卡av | 嫩模啪啪 | 午夜免费成人 | 今天最新中文字幕mv高清 | 91综合国产 | 朴银狐电影中文在线看 | 日本久色| 丁香五香天堂 | 亚洲精品在线免费观看视频 | 日韩精品在线观看网站 | 国产爆操视频 | av影视在线 | 99久久久无码国产精品 | 97久久精品 | 午夜中出| 亚洲熟乱| 国产网站黄色 | 午夜老湿机 | 中国男女全黄大片 | 亚洲 欧美 激情 小说 另类 | 亚洲精品天堂成人片av在线播放 | 91久久国产综合久久91精品网站 | 污污视频免费观看 | 艳母日本动漫在线观看 | 91成人短视频在线观看 | wwxx日本| 色综合中文网 | 性福宝av | 欧美xxxbbb| 色啊色| 亚洲一级二级三级 | 国产av剧情一区二区三区 | 国产麻豆一区二区三区在线观看 | 国产精品成人一区二区 | 黄色网免费看 | 中文字幕av网址 | 在线看黄色片 | 白丝美女被草 | 一二区精品 | 黄色网页在线播放 | 好大好爽视频 | 日韩精品极品视频在线观看免费 | 亚洲综合激情 | 日韩中字在线 | 一级黄色在线 | 秋霞影院午夜丰满少妇在线视频 | 在线天堂中文在线资源网 | 国产精品成人久久久久 | 欧美国产91| 午夜香蕉 | 69视频在线播放 | 超碰av人人 | 丰满岳乱妇在线观看中字无码 | 五月天激情社区 | 日韩精品一区在线播放 | 99久久久无码国产精品免费蜜柚 | 久久久久久久偷拍 | 国产精品午夜福利视频234区 | 成人精品免费 | 七月丁香婷婷 | 天堂男人av| 成年人在线视频观看 | 国产成人在线观看免费网站 | 日韩每日更新 | 黄色免费在线播放 | 邻家有女4完整版电影观看 欧美偷拍另类 | 精品国产无码一区二区三区 | 你懂的亚洲| 最新av在线网站 | 夫妻淫语绿帽对白 | www狠狠操| 99涩涩 | 亚瑟av| 国产在线无 | 国产一区二区自拍视频 | 精品免费在线观看 | 黄色网免费看 | 香蕉视频一区二区三区 | 国产精品不卡一区二区三区 | 成人在线观 | 成人在线观看91 | 姑娘第5集在线观看免费好剧 | 奶水喷溅 在线播放 | 国产精品6 | 黄网站在线观 | 免费欧美大片 |