Nestjs 使用TypeForm保存实体时无法确定标题错误

Nestjs 使用TypeForm保存实体时无法确定标题错误,nestjs,typeorm,Nestjs,Typeorm,我创建了一个NestJS,并为RDBMS使用了TypeORM(我在项目中使用了postgres) Post是一个@实体类,PostRepository是Post的存储库类 我试图创建OnModuleInit服务来初始化一些数据 @Injectable() 导出类PostsDataInitializer在ModuleInit上实现{ 私人数据:Post[]=[ { 标题:“生成NestJS项目”, 内容:“内容”, }, { 标题:“创建GrapQLAPI”, 内容:“内容”, }, { 标题:“

我创建了一个NestJS,并为RDBMS使用了TypeORM(我在项目中使用了postgres)

Post
是一个
@实体
类,
PostRepository
Post
存储库

我试图创建
OnModuleInit
服务来初始化一些数据

@Injectable()
导出类PostsDataInitializer在ModuleInit上实现{
私人数据:Post[]=[
{
标题:“生成NestJS项目”,
内容:“内容”,
},
{
标题:“创建GrapQLAPI”,
内容:“内容”,
},
{
标题:“通过TypeForm连接到Postgres”,
内容:“内容”,
},
];
构造函数(专用只读postRepository:postRepository){}
异步onModuleInit():承诺{
等待这个.postRepository.manager.transaction(异步(管理器)=>{
//注意:必须使用给定的manager实例执行所有数据库操作
//这是EntityManager处理此事务的一个特殊实例
//别忘了在这里等待
等待经理。删除(Post,{});
log('deleted:{}');
this.data.forEach(异步(d)=>wait-manager.save(d-as-Post));
const savedPosts=wait manager.find(Post);
savedPosts.forEach((p)=>{
log('saved:{}',p);
});
});
}
}
启动应用程序时,我遇到了以下错误


CannotDeterminetityError:无法保存,给定的值必须是实体类的实例,而不是给定的对象文字。或者,必须为方法调用指定实体目标。

但是上面的
save
接受了
Post

的一个实例,我认为这与错误所说的差不多。无法将文字对象传递给
。保存

私有数据=[
{
标题:“生成NestJS项目”,
内容:“内容”,
},
{
标题:“创建GrapQLAPI”,
内容:“内容”,
},
{
标题:“通过TypeForm连接到Postgres”,
内容:“内容”,
},
].map(数据=>{
const post=新的post();
对象。分配(post、数据);
回程站;
})

以上可能会解决这个问题。

我认为这几乎就是错误所说的。无法将文字对象传递给
。保存

私有数据=[
{
标题:“生成NestJS项目”,
内容:“内容”,
},
{
标题:“创建GrapQLAPI”,
内容:“内容”,
},
{
标题:“通过TypeForm连接到Postgres”,
内容:“内容”,
},
].map(数据=>{
const post=新的post();
对象。分配(post、数据);
回程站;
})

以上可能会解决这个问题。

我使用
d作为Post
将其转换为
Post
,为什么这不起作用。typescript中的对象文字和实例有什么区别?区别不在于ts,而在于js
newfoo()
对象将是Foo的
实例,而只有
Foo
形状的文本对象则不会。TypeORM希望使用强类型语言中的
Foo
btw类型转换的实例,从而允许我们转换类型。因为javascript不是强类型的,所以您使用的类型断言在运行时将不再存在。请参见我使用
d作为Post
将其转换为
Post
,为什么这不起作用。typescript中的对象文字和实例有什么区别?区别不在于ts,而在于js
newfoo()
对象将是Foo的
实例,而只有
Foo
形状的文本对象则不会。TypeORM希望使用强类型语言中的
Foo
btw类型转换的实例,从而允许我们转换类型。因为javascript不是强类型的,所以您使用的类型断言在运行时将不再存在。看见