2017-04-07 91 views
1

下面的代码在整个模式位于单个文件中时工作,但当我尝试将其分割为单个文件时,出现上述错误。错误:UserCreatePayload.viewer字段类型必须为输出类型,但是:undefined

我正在导入所有类型和功能。我不得不添加更多细节,但我不确定该说些什么。我认为这是一个排序问题,因为它在单个文件中工作,但不会分裂。

非常感谢。

const UserCreateMutation = mutationWithClientMutationId({ 
    name: 'UserCreate', 
    inputFields: { 
    email: {type: new GraphQLNonNull(GraphQLString)}, 
    password: {type: new GraphQLNonNull(GraphQLString)} 
    }, 
    outputFields: { 
    viewer: { 
     type: viewerType, 
     resolve() { 
     return viewerGet(); 
     } 
    }, 
    field: { 
     type: userType, 
     resolve(node) { 
     return node; 
     } 
    } 
    }, 
    async mutateAndGetPayload({email, password}, {db, req}) { 

export const viewerType = new GraphQLObjectType({ 
    name: 'Viewer', 
    fields() { 
    return { 
     id: globalIdField('Viewer', ({_id: viewerLocalId}) => { 
     return viewerLocalId; 
     }), 
     _id: {type: GraphQLID}, 
     user: { 
     type: userType, 
     resolve(parent, args, {req: {user}}) { 
      return user || {}; 
     } 
     }, 
     profile: { 
     type: profileConnectionType, 
     args: { 
      id: {type: GraphQLID}, 
      searchTerm: {type: GraphQLString}, 
      ...connectionArgs 
     }, 
     resolve(parent, {id: profileGlobalId, searchTerm, ...connectionArgs}, {db}) { 
      const query = (() => { 
      const q = {}; 

      if (profileGlobalId) { 
       const {id: profileLocalId} = fromGlobalId(profileGlobalId); 

       Object.assign(
       q, 
       {_id: new ObjectID(profileLocalId)} 
      ); 
      } 

      if (searchTerm) { 
       Object.assign(
       q, 
       { 
        $text: { 
        $search: `\"${searchTerm}\"` 
        } 
       } 
      ); 
      } 

      return q; 
      })(); 
      const sort = {_id: -1}; 
      const limit = 0; 

      return connectionFromPromisedArray(
      promisedArrayGet(
       query, 
       sort, 
       limit, 
       profileCollectionName, 
       db 
      ), 
      connectionArgs 
     ); 
     } 
     } 
    }; 
    }, 
    interfaces: [nodeInterface] 
}); 

class Viewer extends Object {} 
export const viewerGet =() => { 
    return Object.assign(
    new Viewer(), 
    { 
     _id: 'Viewer' 
    } 
); 
}; 

进口{viewerType,用户类型,viewerGet}

+0

请更新viewerType和viewerType对象类型 –

+0

进口的问题我增加了viewerType和对象 – James

+0

分裂他们成模块和普通的'module.exports'只是正常工作 –

回答

0

不知道这是否是问题,但有时模块的加载顺序是一个问题。如果是这样的话,你可以通过制作outputFields a thunk来解决这个问题,即一个返回对象而不是普通对象的函数。

outputFields:() => ({ 
    viewer: { 
    type: viewerType, 
    resolve() { 
     return viewerGet(); 
    } 
    }, 
    field: { 
    type: userType, 
    resolve(node) { 
     return node; 
    } 
    } 
}), 
+0

我仍然有同样的错误。我会经历一切,看看我可以在哪里添加其他thunk。 – James

相关问题