Koa将多表关联数据转换前端需要的格式

64 阅读1分钟

没转换前是这样

image.png

这样分成了两个数据

需要将他们转到一个数组中 sequalize不好做到 需要借助koa

image.png

源代码


    import { secondCtgyModel } from './SecCtgyModel'
    import { thirdCtgyModel } from './ThirdCtgyModel'

    // OneToMany
    secondCtgyModel.hasMany(thirdCtgyModel, {
      as: 'thirdctgy',
      foreignKey: 'secctgyid',
    })

    //ManyToOne

    thirdCtgyModel.belongsTo(secondCtgyModel, {
      foreignKey: 'secctgyid',
      targetKey: 'secondctgyid', //主键
    })

    async function findSecThrdCtgysByFstCtgyId(firstctgyId: number) {
        const result = await secondCtgyModel.findAll({
            raw: true,
            where: {
                firstctgyId
            },
            include: [
                {
                    model: thirdCtgyModel,
                    as: 'thirdctgy',
                }
            ]
        })
        console.log(result);
        
    }

    findSecThrdCtgysByFstCtgyId(1)

去掉raw return出去result

image.png 这里加s 满足集合的感觉

image.png

image.png

然后再dao中操作

image.png

import findSecThrdCtgysByFstCtgyId from '../../../modules/ctgy/defmodel/OneToMany'
class CtgyDao{
    static ctgyDao: CtgyDao = new CtgyDao();
    async findSecThrdCtgys(firstctgyid: string) {
        return await findSecThrdCtgysByFstCtgyId(parseInt(firstctgyid));
    }
}

export default CtgyDao.ctgyDao

router配置

image.png

import Router from "koa-router";

import { success } from "@/common/ResResult";
import ctgyDao from '@/modules/ctgy/dao/CtgyDao'

const router = new Router();

router.prefix('/ctgymodule')

router.get('/findSecThrdCtgys/:firstctgyid', async (ctx, next) => {
    const { firstctgyid } = ctx.params
    const result = await ctgyDao.findSecThrdCtgys(firstctgyid)
    ctx.body = success(result)
})

module.exports = router