2016-07-31 27 views
0

Ich versuche, herauszufinden, wie eine Abfrage mit Sequelize.js zu machen, die so etwas wieAbfrage von GraphQL zu Sequelize.js SELECT ... WHERE COL1 = X AND (COL2 LIKE Y OR COL3 LIKE Y)

ausgeben

SELECT ... WHERE C1 = X AND (C2 LIKE '%Y%' OR C3 LIKE '%Y%')... to MySQL

Code

const resolvers = { 
    Query: { 
    findItems(_, args) { 
     return Item.findAll({ 
     limit: 10, 
     active: 1, 
     offset: args.offset, 
     order: [['created_at', 'DESC']], 
     $or: [ 
      { 
      column_a: { 
       $like: args.y, 
      }, 
      }, 
      { 
      column_b: { 
       $like: args.y, 
      }, 
      }] 
     }); 
    } 
    } 
} 

Es Abfrage SELECT * FROM item ORDER BY created_at DESC LIMIT... (kein wo)

Schema von GraphQL

Die Dokumente von Sequelize.js erklären nicht, wie diese Abfrage ausgeführt wird, ich weiß nicht, ob das Problem von der GraphQL-Abfrage auch stammt.

Hier ist die Abfrage

{ 
    findItems(column_a: "hello", column_b:"hello", active: 1, offset: 0) { 
    column_a 
    column_b 
    active 
    created_at 
    } 
} 

SELECT * FROM item ORDER BY created_at DESC LIMIT... (nicht wo)

Antwort

0

Hatte das $ oder in der, wo zu setzen und ein Dollarzeichen hinzuzufügen.

const resolvers = { 
    Query: { 
    findItems(_, args) { 
     return Item.findAll({ 
     where: { 
     active: 1, 
     $or: [ 
      { 
      column_a: { 
       $like: args.y, 
      }, 
      }, 
      { 
      column_b: { 
       $like: args.y, 
      }, 
      }], 
     }, 
     limit: 10, 
     active: 1, 
     offset: args.offset, 
     order: [['created_at', 'DESC']], 
     }); 
    } 
    } 
} 
0

Sie können jederzeit in einem optionalen passieren, wo Objekt die Abfrage zu filtern. Siehe Querying

const resolvers = { 
    Query: { 
    findItems(_, args) { 
     return Item.findAll({ 
     where: { 
      column_a: args.x 
     }, 
     limit: 10, 
     active: 1, 
     offset: args.offset, 
     order: [['created_at', 'DESC']], 
     $or: [ 
      { 
      column_a: { 
       $like: args.y, 
      }, 
      }, 
      { 
      column_b: { 
       $like: args.y, 
      }, 
      }] 
     }); 
    } 
    } 
}