Se voglio connettere un database mongo a schema graphql, ho bisogno di ORM mangusta o posso semplicemente fare chiamate di driver raw?Ho bisogno di mangimi con graphql?
7
A
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.
Mongoose esegue una promessa se non si supera una richiamata. Puoi semplicemente restituire 'TODO.find()' nella funzione di risoluzione. – ocolot