2015-05-01 10 views
34

Ho un insieme complesso di modelli associati. I modelli sono associati usando tabelle join, ognuna con un attributo chiamato "order". Devo essere in grado di interrogare il modello principale 'Pagina' e includere i modelli associati e ordinare queste associazioni per il campo 'ordine'.Ordinamento dei risultati dei modelli carichi di interesse nel nodo Sequenza

Di seguito è avere alcun effetto sui risultati ordinamento:

db.Page.findAll({ 
    include: [{ 
    model: db.Gallery, 
    order: ['order', 'DESC'], 
    include: [{ 
     model: db.Artwork, 
     order: ['order', 'DESC'] 
    }] 
    }], 
}) 
+5

Nome fastidioso dei campi di esempio. Innanzitutto, entrambi i modelli vengono ordinati su un campo con lo stesso nome. Quel nome è lo stesso dell'operazione. –

risposta

65

io credo che si possa fare:

db.Page.findAll({ 
    include: [{ 
    model: db.Gallery 
    include: [{ 
     model: db.Artwork 
    }] 
    }], 
    order: [ 
    [ db.Gallery, 'order', 'DESC' ], 
    [ db.Gallery, db.ArtWork, 'order', 'DESC' ] 
    ] 
}) 
+0

E pensare che stavo rovinando tutto da un anno. – brian

+0

ordine: [[db.Sequelize.col ('order'), 'DESC'], // per la tabella di pagina [db.Gallery, 'order', 'DESC'], [db.Gallery, db.ArtWork , 'ordine', 'DESC'] ] – Shrikant

10

Se anche si utilizza 'come' e diciamo che si desidera ordine da 'createdDate', la query è simile al seguente:

DbCategoryModel.findAll({ 
    include: [ 
     { 
      model: DBSubcategory, 
      as: 'subcategory', 
      include: [ 
       { 
        model: DBProduct, 
        as: 'product', 
       } 
      ], 
     } 
    ], 
    order: [ 
     [ 
      {model: DBSubcategory, as: 'subcategory'}, 
      {model: DBProduct, as: 'product'}, 
      'createdDate', 
      'DESC' 
     ] 
    ] 
}) 
+1

Questo dovrebbe funzionare anche con chiavi esterne? Rifiuto Non gestito TypeError: conversione della struttura circolare in JSON in Object.stringify (nativo) in Object.QueryGenerator.quote (/ Users/kristoffer/web/fitch/node_modules/sequelize/lib/dialects/abstract/query- generator.js: 869: 76) – Himmators

+0

Sì, funziona, nell'esempio "http://stackoverflow.com/questions/38145702/create-a-composite-index-with-associato-data/38201524#38201524", utilizzando la mia dichiarazione di modelli, basta usare il seguente codice: User.findAll ({ grezzo: 'true', includono: [ { modello: UserAttribute, come: "UserAttribute" } ], ordine: [ [ { modello: UserAttribute, come: 'UserAttribute' }, 'userId', 'DESC' ] ] }) Then ((utenti) => { console.log (degli utenti ', gli utenti) process.exit()} ) –

2
order: [ 
[ db.Sequelize.col('order'), 'DESC'], /*If you want to order by page module as well you can add this line*/ 
[ db.Gallery, db.ArtWork, 'order', 'DESC' ] 
] 
+1

Anche se questo codice può rispondere alla domanda, fornendo ulteriore contesto per quanto riguarda _perché_ e/o _how_ risponde alla domanda migliorerebbe in modo significativo la sua a lungo termine valore. Per favore [modifica] la tua risposta per aggiungere qualche spiegazione. –

+0

Ordina solo il carico impaziente, non il modulo di interrogazione. – Shrikant

Problemi correlati