我正在使用graphQL Apollo、Postgres、Express.js来构建一个小型网站。我正在选择一个现有的profile
,我想更新它的firstName
和lastName
我的代码
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对象。