当前位置: 首页 > 知识库问答 >
问题:

TypeOrm findOne throws'传入的参数必须是12字节的单个字符串或24个十六进制字符的字符串'

阮选
2023-03-14

嗨,我正在使用带有TypeOrm的NestJs,目前连接到MongoDB(但我想独立,因为大多数客户使用MSSQL和Postgres数据库)。

基本上,我想将一个键/值对存储到数据库中。两者都是String类型。这是包含该对的映射实体

@Entity()
export class Mapping extends BaseEntity {
  @PrimaryColumn()
  key: string;

  @Column()
  value: string;
}

存储库当前为空

@EntityRepository(Mapping)
export class MappingsRepository extends Repository<Mapping> {}

在我的服务文件中,我试图通过它的键找到一个值

  public async getValueByKey(key: string): Promise<string> {
    const mapping: Mapping = await this.mappingsRepository.findOne(key);

    if (!mapping) {
      throw new NotFoundException(`Key ${key} does not exist`);
    }

    return mapping.value;
  }

不幸的是,findOne函数在传递密钥时总是抛出此错误

传入的参数必须是12字节的单个字符串或24个十六进制字符的字符串

如何修复此问题,以便传入任何类型的String键?参数key已定义,我尝试使用伪值,如fffsdagsdgfdg

共有2个答案

能翔宇
2023-03-14

findOne对于mongo,意味着它将按属性\u id而不是您的搜索文档,因为默认情况下,mongo总是将此\u id添加为每个文档的唯一验证器,因此,您应该像在itssajananswer中定义的那样为该方法提供查询

但是我认为TypeORM的用例不是最好的,因为它是用于SQL数据库的,而不是非关系型数据库

齐凯康
2023-03-14

你能试试吗

等待这个消息。映射还原。findOne({key})

我猜typeorm除了id

 类似资料:
  • 问题内容: 我将数据存储在字节数组中。如何将这些数据转换为十六进制字符串? 我的字节数组示例: 问题答案: 使用: 或使用 注意: 在format语句中,表示在必要时最多填充2个前导s。这很重要,因为它将被格式化为而不是 或与配合使用: 这是Python 3.6.1中上述方法的基准: 结果: 使用的方法的确提供了其他格式选项,例如用空格,逗号,大写字母/等分隔数字,但是会影响性能。

  • 问题内容: 我想转换为字节数组,但是返回32个字节而不是16个字节。 问题答案: 我认为发问者正在将十六进制值的字符串表示形式转换为表示该十六进制值的字节数组。 apache commons编解码器为此提供了一个类Hex。

  • 问题内容: 我有一个很长的十六进制字符串,代表一系列不同类型的值。我希望将此十六进制字符串转换为字节数组,以便可以将每个值移出并将其转换为适当的数据类型。 问题答案: 假设您的十六进制字符串类似于 将其转换为字符串(Python≤2.7): 或从Python 2.7和Python 3.0开始: 请注意,这是的不变版本。

  • 我有一个CLinux设备,我需要转换一些数据。输入类似于 我需要 这是我尝试过的代码,但它不能编译,因为sstream不在设备操作系统上。有人能给我另一个转换数据的解决方案吗?

  • 问题内容: 我有这个字符串:我想使用Python作为打印它。 仅适用于整数。 怎么做到呢? 问题答案: 您可以将字符串转换为int生成器,对每个元素应用十六进制格式,并使用分隔符插入:

  • 我有这个字符串:并且我想使用Python将其打印为48:65:6c:6c:6f:2c:20:57: 6f: 72:6c: 64:21。 仅适用于整数。 怎样才能做到呢?