2016-05-10 4 views
0

Ich verwende Fata Morgana zum Erstellen von gefälschten Daten.Wie funktioniert die Paginierung mit gefälschten Daten in emberjs?

Szenario/Default.js

export default function(server) { 
    server.createList('product', 48); 
    server.loadFixtures(); 
} 

Above I 48 Produkte ist die Schaffung und von der Steuerung I

this.store.query('product', { 
       filter: { 
        limit: 10, 
        offset: 0 
       } 
      }).then((result) => { 
       console.log(result); 
      }); 

und in mirage nenne/config.js

this.get('/products', function(db) { 
    let products = db.products; 
    return { 
     data: products.map(attrs => ({ 
     type: 'product', 
     id: attrs.id, 
     attributes: attrs 
     })) 
    }; 
    }); 

jetzt meine questi Wie kann man 10 Produkte pro Seite laden? Ich sende Filter 10 als Seitengröße und Offset bedeutet Seitennummer.

Welche Änderungen sollten an config.js vorgenommen werden, um nur begrenzte Produkte zu laden?

Antwort

2

In Ihrem Handler in mirage/config.js:

this.get('/products', function(db) { 
    let images = db.images; 
    return { 
     data: images.map(attrs => ({ 
     type: 'product', 
     id: attrs.id, 
     attributes: attrs 
     })) 
    }; 
    }); 

Sie sind in der Lage, wie so das Request-Objekt zuzugreifen:

this.get('/products', function(db, request) { 
    let images = db.images; 
    //use request to limit images here 
    return { 
     data: images.map(attrs => ({ 
     type: 'product', 
     id: attrs.id, 
     attributes: attrs 
     })) 
    }; 
    }); 

Werfen Sie einen Blick auf this twiddle für ein volles Beispiel. Wo die diese twiddle hat die folgenden:

this.get('tasks',function(schema, request){ 
    let qp = request.queryParams 
    let page = parseInt(qp.page) 
    let limit = parseInt(qp.limit) 
    let start = page * limit 
    let end = start + limit 
    let filtered = tasks.slice(start,end) 
    return { 
     data: filtered 
    } 
    }) 

Sie werden es nur anpassen für Ihren Einsatz wie folgt aus:

this.get('products',function(db, request){ 
    let qp = request.queryParams 
    let offset = parseInt(qp.offset) 
    let limit = parseInt(qp.limit) 
    let start = offset * limit 
    let end = start + limit 
    let images = db.images.slice(start,end) 
    return { 
     data: images.map(attrs => ({ 
     type: 'product', 
     id: attrs.id, 
     attributes: attrs 
     })) 
    } 
    }) 
+0

es gut funktioniert. danke.Ich habe die db.images zu db.products changiert, die Sie auch ändern können. – murli2308

Verwandte Themen