Я пытаюсь удалить магазин из хранилища. Я продолжаю получать сообщение об ошибке:Ошибка при попытке использовать NODE_DELETE для обновления хранилища ретрансляции. Uncault Error: RelayMutationQuery: ожидаемое поле `хранит` на` viewer`, чтобы быть подключением
Непринятая ошибка: RelayMutationQuery: Ожидаемое поле stores
на viewer
будет соединением.
Мой объект зритель что-то вроде этого:
{
"__dataID__":"VXNlcjp2aWV3ZXJfZml4ZWQ=",
"id":"VXNlcjp2aWV3ZXJfZml4ZWQ=",
"stores":{
"__dataID__":"client:-1121235371",
"edges":[
{
"__dataID__":"client:-1121235372",
"node":{
"__dataID__":"U3RvcmU6NTg0MmIwODE1ZDY0NTY1NWU4NTVhOTc1",
"id":"U3RvcmU6NTg0MmIwODE1ZDY0NTY1NWU4NTVhOTc1",
"_id":"5842b0815d645655e855a976",
"address":null,
"closingHours":null,
"contactNumber":null,
"name":"s5",
"openingHours":null,
"isActive":true
}
},
{
"__dataID__":"client:-1121235373",
"node":{
"__dataID__":"U3RvcmU6NThhYmM2ZjcyNTgyNjI5NDVhYzZkMGEx",
"id":"U3RvcmU6NThhYmM2ZjcyNTgyNjI5NDVhYzZkMGEx",
"_id":"58abc6f7258262945ac6d0a2",
"address":null,
"closingHours":null,
"contactNumber":null,
"name":"Dete",
"openingHours":null,
"isActive":true
}
}
]
}
}
И мой файл мутации:
import Relay from 'react-relay';
export default class DeleteStoreMutation extends Relay.Mutation {
getMutation() {
return Relay.QL`mutation{ DeleteStoreMutation }`;
}
getFatQuery() {
return Relay.QL`
fragment on DeleteStoreMutationPayload {
viewer
deletedId
}
`;
}
getConfigs() {
console.log(this.props.viewer);
return [{
type: 'NODE_DELETE',
parentName: 'viewer',
parentID: this.props.viewer.id,
connectionName: 'stores',
deletedIDFieldName: 'deletedId'
}];
}
getVariables() {
return {
_id: this.props.storeId,
};
}
}
GraphQL Schema index.js
import { UserType } from './types'
import { GraphQLObjectType, GraphQLSchema } from 'graphql'
import { nodeField, nodeInterface } from './node'
import modules from './modules'
import { AuthService } from '../services'
let RootQuery = new GraphQLObjectType({
name: 'RootQuery',
fields: {
viewer: {
type: UserType,
resolve: async ({ viewerId }) => AuthService.getViewer(viewerId)
},
node: nodeField
}
});
let RootMutation = new GraphQLObjectType({
name: "RootMutation",
fields:() => ({ ...modules.mutations })
});
let schema = new GraphQLSchema({
query: RootQuery,
mutation: RootMutation
});
экспорт схемы по умолчанию;
UserType.js фрагмент
const UserType = new GraphQLObjectType({
name: 'User',
description: 'A user',
fields:() => ({
id: globalIdField(),
_id: {
type: GraphQLID
},
stores: {
type: StoreConnection,
resolve: (user) => StoreService.getStores(user)
},
}),
interfaces: [nodeInterface]
});
магазин-подключение-type.js
import { GraphQLObjectType, GraphQLList, GraphQLNonNull } from 'graphql';
import PageInfo from './page-info-type'
import Cursor from './cursor-type'
import StoreType from './store-type'
const StoreEdge = new GraphQLObjectType({
name: 'StoreEdge',
fields:() => ({
cursor: {
type: Cursor,
resolve: (store) => ({ value: store._id.toString() })
},
node: {
type: StoreType,
resolve: (store) => store
},
}),
});
const StoreConnection = new GraphQLObjectType({
name: 'StoreConnection',
fields:() => ({
edges: {
type: new GraphQLList(StoreEdge),
resolve: (stores) => stores
},
pageInfo: {
type: PageInfo,
resolve:() => ({hasNextPage: false, hasPreviousPage: false})
},
}),
});
export default StoreConnection;
Можете ли вы предоставить определение своего типа Viewer из вашей схемы GraphQL? Я подозреваю, что «магазины» - это список, а не соединение. – NevilleS
@NevillS Я обновил вопрос с дополнительной информацией. Любая помощь будет большой. Благодаря тонну. –
ОК, так что * * похоже, что ваше поле 'stores' является допустимым соединением GraphQL. Однако логика запроса мутации ретрансляции не согласуется, поэтому она должна действовать по некоторой неполной информации. – NevilleS