2016-05-15 12 views

Odpowiedz

6

Możesz zrobić jedno i drugie.

Jeśli masz już zdefiniowane modele mongoose, możesz ich użyć podczas pisania funkcji resolve. Zobacz following example.

var QueryType = new GraphQLObjectType({ 
    name: 'Query', 
    fields:() => ({ 
    todos: { 
     type: new GraphQLList(TodoType), 
     resolve:() => { 
     return new Promise((resolve, reject) => { 
      TODO.find((err, todos) => { 
      if (err) reject(err) 
      else resolve(todos) 
      }) 
     }) 
     } 
    } 
    }) 
}) 

Jeśli nie masz modele Mongoose lub jeśli chcesz używać MongoDB natywnego sterownika, można to zrobić też. Poniżej znajduje się prosty przykład wykonania tego przy użyciu MongoDB Node.JS Driver.

resolve:() => { 
    return new Promise((resolve, reject) => { 
    db.collection('todos').find({}).toArray((err, todos) => { 
     if (err) reject(err) 
     else resolve(todos) 
    }) 
    }) 
} 

Jeśli masz modele Mongoose i chcesz wygenerować GraphQL schematu z nich może być zainteresowany w graffiti-mongoose, który generuje typy GraphQL i schematy z istniejących modeli Mongoose.

+1

Mongoose retruns obietnicę, jeśli nie przekazać oddzwonić. Możesz po prostu zwrócić 'TODO.find()' w funkcji rozstrzygania. – ocolot