Nuxt3操作MySql和Redis

168 阅读1分钟

image.png

在技术的海洋中,我们总是在寻找那片未被发现的宝藏。今天,我想和大家分享一个我最近发现的非常好用的数据库工具,在Nuxt3中操作MySql和Redis非常方便,这是他的使用文档 db.think-ts.cn 先贴出来。

假如我们有一个登录接口,可以创建 server/api/login.post.ts 文件

import { Db, RDb } from 'think-ts-db'

const mysqlConfig = {
    host: '127.0.0.1',
    port: 3306,
    user: '',
    password: '',
    database: ''
}

const redisConfig = {
    host: '127.0.0.1',
    port: 6379,
    db: 0
}

export default defineEventHandler(async (event) => {
    const { phone, password } = await readBody(event)
    const result = await Db('user', mysqlConfig).where('phone', phone).whereAnd('password', password).findOne()
    if (result?.id) {
        const jwtToken = 'xxxxxxxxxxxx'
        RDb(redisConfig).set(jwtToken, result.id, 3000)
        return {
            code: 0,
            msg: '登录成功',
            data: jwtToken
        }
    } else {
        return {
            code: -1,
            msg: '登录失败'
        }
    }
})

如果想实现一个分页查询的接口也同样非常容易,创建 server/api/news.get.ts 文件

import { Db } from 'think-ts-db'

const mysqlConfig = {
    host: '127.0.0.1',
    port: 3306,
    user: '',
    password: '',
    database: ''
}

export default defineEventHandler(async (event) => {
    const { title } = await readBody(event)
    const m = Db('news', mysqlConfig)
    if (phone) {
        m.whereLike('title', `%${title}%`)
    }
    const list = await m.page(1, 10).select()
    const total = await m.count()
    return {
        total,
        list
    }
})

看,代码是不是非常的简洁优雅,想要了解更多用法,赶快去看官方文档吧!