7
mongoデータベースをgraphqlスキーマに接続したい場合は、mongoose ORMが必要ですか?またはrawドライバの呼び出しのみできますか?graphqlでmongooseが必要ですか?
mongoデータベースをgraphqlスキーマに接続したい場合は、mongoose ORMが必要ですか?またはrawドライバの呼び出しのみできますか?graphqlでmongooseが必要ですか?
あなたは両方を行うことができます。
既に定義されているマングースモデルがある場合は、resolve
関数を記述する際に使用できます。 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)
})
})
}
}
})
})
mongooseモデルをお持ちでない場合、またはmongodbネイティブドライバを使用する場合は、これも可能です。以下は、MongoDB Node.JS Driverを使用した単純な例です。
resolve:() => {
return new Promise((resolve, reject) => {
db.collection('todos').find({}).toArray((err, todos) => {
if (err) reject(err)
else resolve(todos)
})
})
}
あなたはマングースのモデルを持っていて、そこからGraphQLスキーマを生成する場合は、既存のマングースモデルからGraphQLタイプとスキーマを生成し、graffiti-mongooseに興味があるかもしれません。
コールバックを渡さないと、Mongooseは約束を再実行します。あなたは単にresolve関数で 'TODO.find()'を返すかもしれません。 – ocolot