2015-10-19 34 views
6

Ekspres ve mongoose ile graffiti kullanarak bir graphQL yolu oluşturmaya çalışıyorum.graphQL - type Çıktısı alın

Ancak aşağıdaki hatayı alıyorum: firavunfaresi şemada

Error: myColl.myField field type must be Output Type but got: undefined. 
    at invariant (/Users/nha/.../node_modules/graphql/jsutils/invariant.js:20:11) 
    at /Users/nha/.../node_modules/graphql/type/definition.js:299:39 

, türüdür: type : Schema.Types.ObjectId. Başka bir şey için değiştirilmeli mi?

Ben versiyonları olduğuna dikkat etmelidir:

"@risingstack/graffiti": "^1.0.2" 
"@risingstack/graffiti-mongoose": "^3.1.1" 
"mongoose": "~3.6.20" 
+0

hatayı atar kod nedir? –

cevap

2

ben başvurulan başka modeli içe yoktu çıkıyor. Aşağıdaki kodu vardı:

myField : { 
    type : Schema.Types.ObjectId, 
    ref : 'myRef' 
} 

Ve graphQL kullanmak için firavunfaresi modeller listesinde içine 'myRef' ithal değildi. Gerçekten çok basit; hata mesajı muhtemelen iyileştirilmiş olsa da (bu Çıkış türü nedir? Tanımlanmamış ne idi?).

0

hata

Error: ... field type must be Output Type but got: undefined. 

ortalama, sen GraphQLFieldConfig bir sorun var.

GraphQLFieldConfig, tür alanına gereksinim duyar. Bu alan eksikse veya type-ref hatalıysa (tanımsız vb.) Bu hata görüntülenir.

class GraphQLObjectType { 
    constructor(config: GraphQLObjectTypeConfig) 
} 

type GraphQLObjectTypeConfig = { 
    name: string; 
    interfaces?: GraphQLInterfacesThunk | Array<GraphQLInterfaceType>; 
    fields: GraphQLFieldConfigMapThunk | GraphQLFieldConfigMap; 
    isTypeOf?: (value: any, info?: GraphQLResolveInfo) => boolean; 
    description?: ?string 
} 

type GraphQLInterfacesThunk =() => Array<GraphQLInterfaceType>; 

type GraphQLFieldConfigMapThunk =() => GraphQLFieldConfigMap; 

... 

type GraphQLFieldConfig = { 
    type: GraphQLOutputType; 
    args?: GraphQLFieldConfigArgumentMap; 
    resolve?: GraphQLFieldResolveFn; 
    deprecationReason?: string; 
    description?: ?string; 
} 

http://graphql.org/graphql-js/type/#graphqlobjecttyp