【发布时间】:2020-05-29 05:02:23
【问题描述】:
我想使用 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 类型的值存储到数据库中。有什么解决办法吗?
【问题讨论】:
-
如果将 id 列从
key重命名为id会怎样? -
嘿,我更新了我的代码,现在使用
id而不是key。不幸的是,错误仍然存在 -
你能把装饰器从
PrimaryColumn改成ObjectIdColumn吗?