nestjs mongoose關聯查詢

nestjs,mongoose關聯查詢網上搜不到了,查看了nest/mongoose.d.ts文件,分享一波

user.model.ts

import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose"
import { Document, Types } from 'mongoose';
import { ApiProperty } from '@nestjs/swagger'


    @Prop({ type: Types.ObjectId, ref: 'Role', default: null })//一個角色
    @ApiProperty({
        description: '角色id',
    })
    role: any;

    @Prop({ type: Types.ObjectId, ref: 'Deptbase', default: null })//一個部門
    @ApiProperty({
        description: '部門id',
    })
    dept: any;

role.model.ts

   

import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose"
import { Document, Types } from 'mongoose';
import { ApiProperty } from '@nestjs/swagger'

    @Prop({ type: [Types.ObjectId], default: [], ref: "Menu" })//多個權限
    @ApiProperty({
        description: '權限id',
    })
    authority: any[];

menu.model.ts:menu基本菜單信息,在此省略

------查詢方法--------

1.查詢角色和部門

     this.userModel.paginate(queryParams, {
            populate: [{
                path: 'role', select: '_id name', match: { "isDelete": false 
         }
            },
            {
                path: 'dept', select: '_id name code'
            }],
            select: '_id uid name status role dept creator createdAt',//顯示字段,不懂查mongoose官網populate
            page: page > 0 ? page : 1,
            limit: size > 0 ? size : 20,
            sort: '-createdAt'
        })
path中的role,dept字段,user.model中有定義

2.查角色擁有的權限

this.roleModel.findOne({ _id: Types.ObjectId(roleId) }, { _id: 1, authority: 1 }).populate({
            path: 'authority',//authority在role.model.ts中定義
            select: "-creator -createTime -createdAt -updatedAt -opreator -isDelete",//加-爲不顯示字段
            match: {
                "isDelete": false,
                "appId": Types.ObjectId(appId)
            },
            options: {
                $sort: {
                    createdAt: 1
                }
            }
        })

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章