Giter VIP home page Giter VIP logo

ember-data-has-many-query's Introduction

ember-data-has-many-query

Build Status Ember Observer Score

Ember Data's DS.Store supports querying top-level records using the query function. This provides support for things like pagination and searching.

However, DS.hasMany cannot be queried in the same way. This means pagination and searching are not supported with has-many relationships.

This addon provides a way to query has-many relationships. Currently the DS.RESTAdapter and the DS.JSONAPIAdapter are supported.

Installation

ember install ember-data-has-many-query

Usage

Add the RESTAdapterMixin to your DS.RESTAdapter (or DS.JSONAPIAdapter) extension:

import HasManyQuery from 'ember-data-has-many-query';

export default DS.RESTAdapter.extend(HasManyQuery.RESTAdapterMixin, {
});

Add the ModelMixin to any DS.Model extensions:

import HasManyQuery from 'ember-data-has-many-query';

export default DS.Model.extend(HasManyQuery.ModelMixin, {
});

Models with the mixin now support has-many queries:

post.query('comments', { page: 1 });

Sticky belongs-to

Ember Data 2.3.x and below: each has-many query calls reload on the relationship's DS.ManyArray. This means that all previously queried records are cleared from the array. If you are caching the records from each query separately (for example, in a separate array for an infinite scroll implementation), the inverse belongs-to relationship is also cleared on those cached records.

If you want to keep the associated belongs-to record after a new query, you can define the belongs-to attribute using belongsToSticky:

import HasManyQuery from 'ember-data-has-many-query';

export default DS.Model.extend(HasManyQuery.ModelMixin, {
  post: HasManyQuery.belongsToSticky('post'),
});

This is a (pretty terrible) hack that caches the belongs-to record in a separate property, and when the record is cleared by another query call, any property gets will return the cached version instead. If anyone has ideas for better implementations, please let me know!

ember-data-has-many-query's People

Contributors

ember-tomster avatar jaredcnance avatar mdehoog avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.