如何在nestjs中使用mongoose模型而不在构造函数中初始化?

9rnv2umw  于 2023-04-21  发布在  Go
关注(0)|答案(1)|浏览(78)

我在服务中使用了mongoose模式注入,就像我们通常做的那样。但是现在我希望将我的一些代码转移到helper函数中,以便它可以重用。通常,mongoose模式注入为:-

export class UsersService {
  constructor(
    private postsService: PostsService,
    @InjectModel(User.name) private userModel: Model<UserDocument>,
    @InjectModel(Category.name) private categoryModel: Model<AddCategoryDto>,
    @InjectModel(friendship.name)
    private friendshipModel: Model<friendshipDocument>,
    @InjectModel(Attachment.name)
    private attachmentModel: Model<AttachmentDocument>,
    @InjectModel(UserCategory.name)
    private userCategoryModel: Model<AddUserCategoryDto>,
    @InjectModel(Post.name) private postModel: Model<PostDocument>,
    @InjectModel(Image.name) private imageModel: Model<ImageDocument>,
  ) {}}

所以,现在我希望这个@InjectModel(User.name) private userModel: Model<UserDocument>函数定义中使用单独的文件,像这样:-

export isFriends(userID: string, friendID: string){
   @InjectModel(User.name) private userModel: Model<UserDocument>
   const user1 = await userModel.findById(userID);
}

但是我在这个时候得到错误。请告诉我,这是如何实现的?在NESTJS中有点新鲜。

ncecgwcz

ncecgwcz1#

最接近你想要实现的是简单地将userModel传递到函数的参数中(我还将args作为object传递,因为有一堆未命名的参数是不好的):

export async function isFriends({
    userID,
    friendID,
    userModel,
}: {
    userID: string;
    friendID: string;
    userModel: Model<UserDocument>;
}) {
    const user1 = await userModel.findById(userID);
}

相关问题