API Docs for: 5.4.0-alpha.75+3cf8e39f
Show:

ManyArray Class

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.

This class is not intended to be directly instantiated by consuming applications.

Inverses

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

import Model, { hasMany } from '@ember-data/model';

export default class PostModel extends Model {
  @hasMany('comment') comments;
}
import Model, { belongsTo } from '@ember-data/model';

export default class CommentModel extends Model {
  @belongsTo('post') post;
}

If you created a new instance of Post and added a 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.

Item Index

Methods

createRecord

(
  • hash
)
Model public

Create a child record within the owner

Parameters:

  • hash Object

Returns:

Model:

record

reload

() public

Reloads all of the records in the manyArray. If the manyArray holds a relationship that was originally fetched using a links url EmberData 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

let user = store.peekRecord('user', '1')
await login(user);

let permissions = await user.permissions;
await permissions.reload();

save

() PromiseArray public

Saves all of the records in the ManyArray.

Example

let inbox = await store.findRecord('inbox', '1');
let messages = await inbox.messages;
messages.forEach((message) => {
  message.isRead = true;
});
messages.save();

Returns:

PromiseArray:

promise

Properties

isLoaded

Boolean public

The loading state of this array

isPolymorphic

Boolean private

true if the relationship is polymorphic, false otherwise.

meta

Object | null public

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 meta data via the meta property:

let comments = await post.comments;
let meta = comments.meta;

// meta.page => 1
// meta.total => 5