当我通过这样的突变向后端请求时:
const navSlide = () => {
const burger = document.querySelector('.burger');
const nav = document.querySelector('.nav-links');
const navLinks = document.querySelectorAll('nav-links li');
//Toggle nav
burger.addEventListener('click', () => {
nav.classList.toggle('nav-active');
//Animate Links
navLinks.forEach((link, index) => {
if(link.getElementsByClassName.animation) {
link.getElementsByClassName.animation = '';
} else {
link.style.animation = `navLinkFade 0.5s ease forwards ${index / 7 + 0.3}s`;
}
});
//Burger Animation
burger.classList.toggle('toggle');
});
}
navSlide();
我收到这样的格式的回复:
mutation{
resetPasswordByToken(token:"my-token"){
id
}
}
对我来说,那个名称与该变异相同的包装对象似乎有些尴尬(至少是多余的)。有没有办法摆脱这种包装,使返回的结果更干净?
这就是我现在定义突变的方式:
{
"data": {
"resetPasswordByToken": {
"id": 3
}
}
}
答案 0 :(得分:0)
总而言之:否。
resetPasswordByToken
不是“包装对象”,而只是您在架构中定义的可解析为对象的字段(在本例中为UserType
)。虽然通常一次只请求您mutation
类型的一个字段,但是可以请求任意数量的字段:
mutation {
resetPasswordByToken(token:"my-token"){
id
}
someOtherMutation {
# some fields here
}
andYetAnotherMutation {
# some other fields here
}
}
如果我们要像您建议的那样平缓响应的结构,我们将无法区分一个突变返回的数据与另一个突变返回的数据。同样,我们需要将所有这些内容嵌套在data
内,以使我们的实际数据与返回的错误(出现在单独的errors
条目中)分开。