Resolvers should never destructively modify the contextValue argument.这可确保所有解析器之间的一致性,并防止意外错误.
我想找人帮我把这份报表拆开.
- 我想"永不 destruct 性修改"的意思是您可以在上下文中添加属性,但不能删除或更改它们?
- "确保所有解析器的一致性"我猜是指并行处理query个解析器的情况,以至于上下文值可能在执行过程中意外更改.但是,串联处理的mutation个解析器怎么办?在这种情况下,改变上下文是否安全?
我的问题是:
- 作为上下文初始化函数的一部分,我加载经过身份验证的用户.
- 我将用户对象放入要由解析器使用的上下文中.
- 我有一个
setUserDetails
的Mutations ,可以更新用户. - 如果我运行具有两个Mutations 的查询(例如,
setUserDetails
和sendWelcomeEmail
),则第二个Mutations 看到的是原始用户详细信息,而不是更新的用户详细信息unless I mutate the context.
这会导致"意外错误",这是我们一开始就试图避免的事情.
所以我的问题是:在Mutations 解析器中Mutations 上下文可以吗?或者,有没有其他推荐的方法来避免这个问题?