Я хочу обновить firstName
и lastName
объекта profile
.
Я бы хотел, чтобы пользователь мог обновить оба из них или только один из них. Однако Я не знаю, как сделать такую мутацию, чтобы один из аргументов (firstName
и lastName
) был необязательным.
Мой текущий код Это работает, если пользователь вводит как firstName
, так и lastName
@Mutation(() => Boolean)
@UseMiddleware(isAuth)
async updateProfile(
@Ctx() {payload}: MyContext,
@Arg('firstName') firstName: string,
@Arg('lastName') lastName: string,
) {
try {
const profile = await Profile.findOne({where: { user: payload!.userId}})
if (profile) {
profile.firstName = firstName
profile.lastName = lastName
await profile.save();
return true
}
return false
} catch(err) {
return false
}
}
Если я запускаю мутацию (за исключением одного аргумента):
mutation{
updateProfile(firstName: "test")
}
, я получаю сообщение об ошибке:
"message": "Поле" updateProfile ", аргумент" lastName "типа" String! "Требуется, но он не был предоставлен.
Я думал, что можно обойти передавать аргумент по умолчанию в @Arg
, но потом я понял, что аргумент по умолчанию - stati c, а не Dynami c, поэтому я не могу передать firstName
или lastName
для этого спецификатора c profile