2017-10-29 5 views
0

Ich versuche, Graphql lernen, so dass ich es auf eine React-Website anwenden kann. Ich habe jetzt einige Probleme mit ihm und kann nicht herausfinden, warum es sagt, dass Null zurückgegeben wird, wenn ich 100% sicher bin, dass das, was zurückgegeben wird, nicht null ist. Wenn ich results im Resolver drucke, druckt es ein Array von Benutzerobjekten wie erwartet, aber wenn es zurückgibt, sagt es, dass ich null für das Feld Query.users zurückgebe. Jede Hilfe wäre willkommen.GraphQL Apollo kann nicht Null für nicht Nullable

Query: { // graphql query resolver 
    users: function (parent, args, { User }) { 
     var mongoose = require('mongoose'); 
     var array = []; 
     mongoose.connect('localhost:27017', function(err){ 
      if(err) throw err; 
      User.find({}).then(results=>{ 
       console.log(results); 
       return results; 
      }); 
     }); 
    } 
} 

type Query { //query typedef 
    users: [User]! 
} 

type User { // graphql schema typedef 
    _id: String! 
    username: String!, 
    email: String!, 
    joined: String, 
    interests: [String], 
    friends: [User] 
} 

var User = new Schema({ // mongoose schema def 
    username: !String, 
    email: !String, 
    joined: String, 
    interests: [String], 
    friends: [[this]] 
}); 

Antwort

1

Es ist, weil Sie nichts in Ihrer users Funktion zurückgeben.

Sie können den aufgelösten Versprechenswert wie folgt abwarten und zurückgeben. Versuchen Sie es und überprüfen Sie, ob Sie die Benutzerliste immer noch nicht aus Ihrer Abfrage abrufen können.

users: function (parent, args, { User }) { 
    return await getUsers() 
} 


const getUsers =() => { 
    var mongoose = require('mongoose'); 
    return new Promise((resolve, reject) => { 
    mongoose.connect('localhost:27017', function(err){ 
     if(err) 
     reject(err); 
     User.find({}).then(results=>{ 
     console.log(results); 
     resolve(results); 
     }); 
    });   
    }); 
} 

Der Code, den ich hinzugefügt hat ES6, bitte es zu ES5 konvertieren, wenn das, was Sie aus Ihrer Anwendung zu verwenden, ist durch.

+0

Das hat funktioniert! Ich danke dir sehr. –

Verwandte Themen