首页 > 解决方案 > 使用 TypeORM 将类型对象的值保存到 MongoDB

问题描述

我想使用 TypeORM 将键值对存储到 MongoDB。我的后端 API 是用 NestJs 制作的(不确定这是否重要)。键是类型string,值是类型object,因为我想将任何内容存储到该对象。

这是我的 TypeORM 数据库配置

TypeOrmModule.forRoot({
  type: 'mongodb',
  host: 'localhost',
  port: 27017,
  database: 'nest',
  entities: [`${__dirname}/**/*.entity.{ts,js}`],
  synchronize: true,
}),

我的映射实体不会自动生成密钥,因为我想自己设置它

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

  @Column()
  value: object;
}

当我想将新映射保存到数据库时,我运行此逻辑(在哪里都无所谓)

  const newMapping: Mapping = new Mapping();
  newMapping.key = 'foobar';
  newMapping.value = { foo: 'bar' };
  await newMapping.save();

我收到此错误

TypeError:无法读取未定义的属性“propertyName”

在执行save数据库实体的功能时。似乎我无法将类型的值存储object到数据库中。有什么解决方案吗?

标签: mongodbnestjstypeorm

解决方案


您可以尝试 NestJS 对 MongoDB 的支持。

TypeORM 具有基本的 MongoDB 支持。大多数 TypeORM 功能是 RDBMS 特定的,此页面包含所有 MongoDB 特定的功能文档。typeorm 文档。

而是尝试使用 NestJS 方法。他们为 MongoDB 构建了一个模块,它需要编写更多的代码,但比 Typeorm 更适合 mongo。它使用 npm mongoose 包。我目前使用它,它工作得很好,实施起来并不难。

这是他们在 NestJS / MongoDB 上的文档。MongoDB | 巢穴

希望这对你有帮助!


推荐阅读