对象文本只能指定已知属性 - 在"保存选项"类型中不存在



我正在使用graphQL Apollo、Postgres、Express.js来构建一个小型网站。我正在选择一个现有的profile,我想更新它的firstNamelastName

我的代码

const profile = await Profile.findOne({where: { user: payload!.userId}}) 
if (profile) {
console.log(profile) <-- It returns correctly the profile I am looking for
await profile.save({
firstName, <-- Error here
lastName
})

然而,我得到以下错误:

类型为"{firstName:string;lastName:string;}"的参数不可分配给类型为"SaveOptions"的参数。对象文字只能指定已知属性,并且类型"SaveOptions"中不存在"firstName"。ts(2345(

错误:https://i.stack.imgur.com/W7BEd.jpg

我认为问题出在配置文件的类型上,即配置文件|未定义。其中配置文件是从类型ORM实体推断的:

@ObjectType()
@Entity("profile")
export class Profile extends BaseEntity{
@Field(()=>String)
@Column({ nullable: true }) 
firstName: string;

@Field(()=>String)
@Column({ nullable: true }) 
lastName: string;
}

快速浏览一下他们的文档,我觉得保存不会将新数据作为输入。

相反,它们直接修改对象(因此profile.firstName=firstName(,然后不带参数地调用save。

要保存的参数用于配置保存方式的SaveOptions,请参阅此处:https://typeorm.delightful.studio/interfaces/_repository_saveoptions_.saveoptions.html

所以TypeScript说属性firstName在SaveOptions中不存在(这是真的(,这就是你传递给保存函数的内容,该函数需要一个有效的SaveOptions对象。

相关内容

  • 没有找到相关文章