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 } } })