2016-05-15 19 views

risposta

6

Puoi fare entrambe le cose.

Se sono già definiti modelli di mangimi, è possibile utilizzarli durante la scrittura delle funzioni resolve. Vedi lo 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) 
      }) 
     }) 
     } 
    } 
    }) 
}) 

Se non si dispone di modelli mangusta o se si desidera utilizzare il driver MongoDB nativa, si può fare anche questo. Di seguito è un semplice esempio di farlo utilizzando MongoDB Node.JS Driver.

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

Se si dispone di modelli mangusta e si desidera generare lo schema GraphQL da loro, si può essere interessati a graffiti-mongoose, che genera i tipi GraphQL e gli schemi da modelli mangusta esistenti.

+1

Mongoose esegue una promessa se non si supera una richiamata. Puoi semplicemente restituire 'TODO.find()' nella funzione di risoluzione. – ocolot

Problemi correlati