Typeorm Mongodb存储库查找方法不起作用

agxfikkp  于 2023-02-15  发布在  Go
关注(0)|答案(1)|浏览(219)

我正在我的一个项目中使用typeorm + mongodb,并且正在阅读文档,其中我需要对字符串数组执行find检查。
这应该可以通过查询{where: { property: {$in: myStringArray}}}轻松实现
documentation所述:

但出于某种原因,每当我尝试在代码中使用这个时:
第一节第一节第一节第二节第一节
当我浏览代码编辑器中的类型时,它说它们是expect字符串或typeorm find方法(例如In, LessThan, ...,但它们不适用于mongodb),而不是对象。
为什么在typeorm文档上有这些建议,但在代码内部看起来却不同呢?
有人知道怎么克服吗?

oewdyzsn

oewdyzsn1#

更新:这看起来像是Typeorm项目中仍处于打开状态的错误。
我找到了两种克服它的方法。你可以选择:
解决方案1,添加@ts-ignore:

// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore

这样,typescript就不会抱怨输入错误,并且可以按预期工作。您必须在where子句的正上方使用,例如:

const assetsExists = await assetRepository.find({
      // eslint-disable-next-line @typescript-eslint/ban-ts-comment
      // @ts-ignore
      where: {
        sourceId: { $in: assetIds },
      },
    })

解决方案2,可以将其强制转换为unknown,然后再转换为string(丑陋的af,但可以工作)

const assetsExists = await assetRepository.find({
      where: {
        sourceId: { $in: assetIds } as unknown as string,
      },
    })

就我个人而言,我倾向于解决方案1,从我检查的未决问题来看,这已经出现了很多,所以如果你有这个问题,也许可以考虑两种方法中的一种。

相关问题