Apollo`subscribeToMore`变量是否必须与初始查询匹配?subscribeToMore
变量必须与初始查询相匹配?例如,如果我的初始查询是
const { data, loading, error } = useQuery(INBOX)
其中,变量来自于服务器上验证的id(不是客户端发送的)。
async inbox(parent, args, { request, prisma }, info) {
const id = await getUserId(request)
if (!user.email) {
throw new Error('You must be logged in!')
}
return prisma.query.user({
where: {
id,
}
},info)
}
而如果订阅解析器是像下面这样的。
newInbox: {
subscribe: (parent, args, { pubsub }, info) => pubsub.asyncIterator(PUBSUB_NEW_INBOX)
},
订阅数据会被发送到数据库中的每一个客户端吗? 因为订阅本身没有过滤变量,或者它能识别出初始查询已经有了自己的变量?
换句话说,有必要做类似下面的事情?
newInbox: {
subscribe: withFilter(
(parent, args, { pubsub }, info) => pubsub.asyncIterator(PUBSUB_NEW_INBOX),
(payload, variables) => payload.newInbox.id === variables.id
)
},
通过从客户端发送一个变量?