please help me
i am applying the filter in the nested many to many relations roles in this query in user.service.ts like this:
const users = await this.repo.findAndCount({roles: {slug: ‘admin’}});
but i have get empty records, please tell me whats am i doing wrong?
this is my User model
import { Collection, Entity, EntityRepositoryType, Enum, Filter, ManyToMany, PrimaryKey, Property, Unique } from '@mikro-orm/core'; import { ObjectId } from '@mikro-orm/mongodb'; import { UserRepository } from './user.repository'; import { UserStatus } from 'src/constants/UserStatus'; import { UserType } from 'src/constants/UserType'; import { Role } from 'src/role/role.model'; import { MainEntity } from 'src/helper/db/base.entity'; @entity({ repository: () => UserRepository }) export class User extends MainEntity { [EntityRepositoryType]?: UserRepository; @Property() firstName!: string; @Property() lastName!: string; @Property() password!: string; @Property() @unique() email!: string; @Property({nullable: true}) countryCode!: string; @Property({nullable: true}) phone!: string; @Property() @enum(() => UserType) userType!: string; @Property() @enum(() => UserStatus) status!: UserStatus; @manytomany(() => Role, role => role.users, { owner: true, eager: true }) roles = new Collection(this); }
this is my Role model
import { Collection, Entity, EntityRepositoryType, Enum, ManyToMany, PrimaryKey, Property, Unique } from '@mikro-orm/core'; import { ObjectId } from '@mikro-orm/mongodb'; import { RoleRepository } from './role.repository'; import { User } from 'src/user/user.model'; import { RoleEnum } from 'src/constants/Role'; import { Exclude, Expose } from 'class-transformer'; import { Permission } from 'src/permission/permission.model'; import { MainEntity } from 'src/helper/db/base.entity'; @entity({ repository: () => RoleRepository }) export class Role extends MainEntity { [EntityRepositoryType]?: RoleRepository; @expose() @Property({ unique: true }) @enum(() => RoleEnum) role!: RoleEnum; @expose() @Property({ unique: true }) slug!: string; // @exclude() @manytomany(() => User, user => user.roles) users = new Collection(this); @manytomany(() => Permission, permission => permission.roles, { owner: true, eager: true}) permissions = new Collection(this); }
this roleRepository
export class RoleRepository extends AppRepository { // custom methods }
this is user repo
import { User } from "./user.model"; import { AppRepository } from "src/confugrations/database/mikro-orm/apprepository/app.repository"; export class UserRepository extends AppRepository { // custom methods }
this is common AppRepo
import { AnyEntity, EntityManager, EntityRepository, FilterQuery, ObjectId } from "@mikro-orm/mongodb"; export class AppRepository extends EntityRepository { persist(entity: AnyEntity | AnyEntity[]): EntityManager { return this.em.persist(entity); } async persistAndFlush(entity: AnyEntity | AnyEntity[]): Promise { await this.em.persistAndFlush(entity); } remove(entity: AnyEntity): EntityManager { return this.em.remove(entity); } async removeAndFlush(entity: AnyEntity): Promise { await this.em.removeAndFlush(entity); } async flush(): Promise { return this.em.flush(); } }