2016-05-15 13 views

答えて

6

あなたは両方を行うことができます。

既に定義されているマングースモデルがある場合は、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に興味があるかもしれません。

+1

コールバックを渡さないと、Mongooseは約束を再実行します。あなたは単にresolve関数で 'TODO.find()'を返すかもしれません。 – ocolot

関連する問題