2017-06-08 18 views
2

graphql.jsでmysql db tableの最後の3つのcreated_at要素を取得する方法は? 私はこのようなsequelize.jsgraphqlで最後の3要素を取得する方法

使用:

query: '{ 
    elements(last:3){ 
     id 
    } 
}' 

これはこれは、それが私のファイルschema.js

const Query = new GraphQLObjectType({ 
    name: 'Query', 
    description: 'Root query object', 
    fields() { 
     return { 
      elements: { 
       type: new GraphQLList(Element), 
       args: { 
        id: { 
         type: GraphQLString 
        } 
       }, 
       resolve (root, args) { 
        return Db.models.elements.findAll({ where: args }); 
       } 
      } 
     } 
    } 
}); 

答えて

2

必要があります私のファイルdb.js

const Conn = new Sequelize(/*connection config*/); 
Conn.define('elements', { 
    id: { 
     type: Sequelize.STRING(36), 
     primaryKey: true, 
     allowNull: false 
    } 
}); 
export default Conn; 

ですこのようになります。答えを

... 
return Db.models.elements.findAll({ 
    limit: 3, 
    where: args, 
    order: [['created_at', 'DESC']] 
}); 

http://docs.sequelizejs.com/manual/tutorial/querying.html#pagination-limiting http://docs.sequelizejs.com/manual/tutorial/querying.html#ordering

+0

感謝。 しかし、私はscheme.jsをどのように変更できますか? このようにしますか? 'lastThreeElements:{ タイプ:新しいGraphQLList(エレメント)、 引数:{ ID:{ タイプ:GraphQLString }}、 解決(根、引数){ リターンDb.models.elements.findAll ({ limit:3、 :args、 order:[['created_at'、 'DESC']] }); } } '' ' – pmnazar

+0

はい、うまくいきますか? –

+0

はい、うまくいきます。 – pmnazar

関連する問題