2016-12-15 27 views
0

我認爲這個問題是,在我的schema.js文件中的字段被稱爲比「ID」以外的東西,因爲該領域被稱爲別的東西在數據庫。relayjs和graphql錯誤:錯誤:「節點」期望場「ID」

var classroomType = new GraphQLObjectType({ 
    name: 'Classroom', 
    description: 'A classroom in a school', 
    fields:() => ({ 
    clid: globalIdField('Classroom'), 
    course: { 
     type: GraphQLString, 
     description: 'The course assigned to this classroom.' 
    }, 
    enrollments: { 
     type: enrollmentConnection, 
     description: 'The students in a classroom', 
     args: connectionArgs, 
     resolve: (classroom, args) => connectionFromArray(classroom.enrollments.map(getEnrollment), args) 
    } 
    }), 
    interfaces: [nodeInterface], 
}); 

gloablIdField是否被稱爲id?這似乎很奇怪。如果是這樣,我怎麼從沒有叫id數據庫映射,爲一個id字段?

回答

1

如果您需要將您的全局ID字段設置爲'clid',您可以將ID的名稱更改爲您的Node接口中的clid,或者您可以保留其id並將別名應用於解析器方法中的字段打你的數據庫。

選項1是這樣的:

interface MyNode { 
    clid: ID! 
} 

type Classroom implements MyNode { 
    clid: ID! 
    ... 
} 

選項2

在 'globalIdField' 功能通過graphql中繼暴露接受一個idFetcher作爲第二個參數。你可以把它改成這樣:

id: globalIdField('Classroom', (obj, context, info) => obj.clid) 

你會那麼還需要別名id字段在突變解析器來CLID爲好。

相關問題