GraphQL ukazující hodnoty, jak je null

hlasů
0

Učím GraphQL a mám dva typy objektů.

Řekněme, že vypadají takto

Say, typ kniha vypadá následovně

const BookType = new GraphQLObjectType({  
    name: 'Book',  
    fields: () => ({ 
        id: { type:  GraphQLID},
        name: { type: GraphQLString},
        genre: { type: GraphQLString }, 
        author: { 
            type: authorType,
            resolve(parents, args) {
               Author.findOne( 
                   {
                    name: parents.authorName
                   }, function(err, result) {
                       console.log(result)
                       return result
                   })
            }
        }

    })
})

a Autor typ vypadá následovně

const authorType = new GraphQLObjectType({  
    name: 'author',  
    fields: () => ({ 
        id: { type:  GraphQLID},
        name: { type: GraphQLString},
        age: { type: GraphQLInt },
        books: {  
            type: new GraphQLList(BookType), 
            resolve(parent, args) {
            }
        }
    })
})

Teď jsem přidávání dat mutací (Není to nelegální, protože si myslím, že je irelevantní) a spusťte dotaz v graphqlpřidat data v Book Type. Je správně zobrazuje data o názvu, žánru, id, ale pro authorType je zobrazeno údaje byly vytvořeny s nulou, zatímco v konzole] .log výsledky něco přihlásit takhle v konzoli

//This is console log in terminal
{ age: 'none',
  _id: 5bcaf8904b31d50a2148b60d,
  name: 'George R Martin',
  __v: 0 }

Toto je dotaz, jsem běží v graphiql

mutation{
        addBooks( 
           name: Game of Thrones,
           genre: Science Friction, 
            authorName: George R Martin
            ) {
           name,
           genre,
           author {
           name
                }
              }
           }

Moje celé schéma je k dispozici zde

Může mi někdo prosím, prosím, pomozte mi zjistit, co bych mohl dělat špatně?

Položena 20/10/2018 v 12:49
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Resolver musí vrátit buď nějakou hodnotu, nebo slib, že se bude řešit v hodnotě - pokud tomu tak není pole řeší vrátí null. Takže tam dvě věci off o kódu. Za prvé, nemusíte se vrátit buď hodnotu nebo slib. Dva se vrátíte něco uvnitř zpětné volání, ale to není vlastně dělat nic, protože většina knihoven ignorovat návratové hodnoty funkce zpětného volání v každém případě.

Můžete zabalit zpětné volání v Promise , ale to se stane zbytečná tady, protože žíhaná již poskytuje způsob, jak se vrátit slib - stačí vynechat zpětné volání úplně.

resolve(parent, args) {
  return Author.findOne({name: parent.authorName)
}

Váš mutace resolver funguje, protože se vrátit hodnotu vrácenou voláním save(), které skutečně vrátí slib, že se bude řešit až na hodnotu instance modelu ukládán.

Odpovězeno 20/10/2018 v 13:32
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more