通常可以使用以下命令为单个定义的查询创建Relay query
对象:
const relayQuery = Relay.QL `
query UserRoute($id_0: ID!) {
user(id:$id_0) {
id,
name,
email
}
}
;
我从通过网络发送的查询字符串中截取了查询字符串。它们通常具有多个定义(例如,查询,片段,变异,订阅)。我想为该类型的查询创建Relay query object
。以下代码抛出错误:
Relay transform error "You supplied a GraphQL document named 'network' with 2 definitions, but it must have exactly one definition." in file '/Users/ankitshah/lyearnapp/src/network.js'. Try updating your GraphQL schema if an argument/field/type was recently added.
代码:
const relayQuery = Relay.QL `
query UserRoute($id_0: ID!) {
user(id:$id_0) {
id,
...F0
}
}
fragment F0 on User {
id,
name,
email
}
;
我想要这个,因为我想使用Relay.Store.getStoreData().updateQueryPayload(queryObject, payload)
功能更新中继存储。任何帮助表示赞赏。
答案 0 :(得分:0)
我遇到了同样的错误。您需要将查询压缩为没有像这样的碎片:
const relayQuery = Relay.QL `
query UserRoute($id_0: ID!) {
user(id:$id_0) {
id,
name,
email
}
}
;
然后它奏效了。
答案 1 :(得分:0)
尝试使用namedspaces。例如
user1 :user(id:$id_0) {
id,
name,
email
}
user2 :user(id:$id_1) {
id,
name,
email
}