#

API Docs for: v3.8.1
Show: Inherited Protected Private Deprecated

# DS.ManyArray Class

Uses

- Ember.MutableArray
- Ember.Evented

Extends EmberObject
Defined in: `addon/-private/system/many-array.js:16`
Module: ember-data

A `ManyArray` is a `MutableArray` that represents the contents of a has-many relationship.

The `ManyArray` is instantiated lazily the first time the relationship is requested.

### Inverses

Often, the relationships in Ember Data applications will have an inverse. For example, imagine the following models are defined:

    import DS from 'ember-data';

    export default DS.Model.extend({
      comments: DS.hasMany('comment')
    });

    import DS from 'ember-data';

    export default DS.Model.extend({
      post: DS.belongsTo('post')
    });

If you created a new instance of `App.Post` and added a `App.Comment` record to its `comments` has-many relationship, you would expect the comment's `post` property to be set to the post that contained the has-many.

We call the record to which a relationship belongs-to the relationship's owner.

- Index
- Methods
- Properties

## Item Index

### Methods

- createRecord
- reload
- save

### Properties

- isLoaded
- isPolymorphic
- meta
- promise
- relationship

## Methods

### `createRecord`

(

- `hash`

)
DS.Model private

Defined in `addon/-private/system/many-array.js:296`

Create a child record within the owner

#### Parameters:

- `hash` Object

#### Returns:

DS.Model:

record

### `reload`

() public

Defined in `addon/-private/system/many-array.js:232`

Reloads all of the records in the manyArray. If the manyArray holds a relationship that was originally fetched using a links url Ember Data will revisit the original links url to repopulate the relationship.

If the manyArray holds the result of a `store.query()` reload will re-run the original query.

Example

    var user = store.peekRecord('user', 1)
    user.login().then(function() {
      user.get('permissions').then(function(permissions) {
        return permissions.reload();
      });
    });

### `save`

() DS.PromiseArray

Defined in `addon/-private/system/many-array.js:265`

Saves all of the records in the `ManyArray`.

Example

    store.findRecord('inbox', 1).then(function(inbox) {
      inbox.get('messages').then(function(messages) {
        messages.forEach(function(message) {
          message.set('isRead', true);
        });
        messages.save()
      });
    });

#### Returns:

DS.PromiseArray:

promise

## Properties

### `isLoaded`

Boolean

Defined in `addon/-private/system/many-array.js:63`

The loading state of this array

### `isPolymorphic`

Boolean private

Defined in `addon/-private/system/many-array.js:121`

`true` if the relationship is polymorphic, `false` otherwise.

### `meta`

Object public

Defined in `addon/-private/system/many-array.js:80`

Metadata associated with the request for async hasMany relationships.

Example

Given that the server returns the following JSON payload when fetching a hasMany relationship:

    {
      "comments": [{
        "id": 1,
        "comment": "This is the first comment",
      }, {
    // ...
      }],

      "meta": {
        "page": 1,
        "total": 5
      }
    }

You can then access the metadata via the `meta` property:

    post.get('comments').then(function(comments) {
      var meta = comments.get('meta');

    // meta.page => 1
    // meta.total => 5
    });

### `promise`

Ember.RSVP.Promise private

Defined in `addon/-private/system/many-array.js:71`

Used for async `hasMany` arrays to keep track of when they will resolve.

### `relationship`

ManyRelationship private

Defined in `addon/-private/system/many-array.js:129`

The relationship which manages this array.