#

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

# DS.Reference Class

Defined in: `addon/-private/system/references/reference.ts:19`
Module: ember-data

This is the baseClass for the different References like RecordReference/HasManyReference/BelongsToReference

- Index
- Methods

## Item Index

### Methods

- link
- meta
- remoteType

## Methods

### `link`

() String

Defined in `addon/-private/system/references/reference.ts:88`

The link Ember Data will use to fetch or reload this belongs-to relationship.

Example

    // models/blog.js
    export default DS.Model.extend({
       user: DS.belongsTo({ async: true })
     });

    let blog = store.push({
       data: {
         type: 'blog',
         id: 1,
         relationships: {
           user: {
             links: {
               related: '/articles/1/author'
             }
           }
         }
       }
     });
    let userRef = blog.belongsTo('user');

    // get the identifier of the reference
    if (userRef.remoteType() === "link") {
       let link = userRef.link();
     }

#### Returns:

String:

The link Ember Data will use to fetch or reload this belongs-to relationship.

### `meta`

() Object

Defined in `addon/-private/system/references/reference.ts:136`

The meta data for the belongs-to relationship.

Example

    // models/blog.js
    export default DS.Model.extend({
       user: DS.belongsTo({ async: true })
     });

    let blog = store.push({
       data: {
         type: 'blog',
         id: 1,
         relationships: {
           user: {
             links: {
               related: {
                 href: '/articles/1/author',
                 meta: {
                   lastUpdated: 1458014400000
                 }
               }
             }
           }
         }
       }
     });

    let userRef = blog.belongsTo('user');

    userRef.meta() // { lastUpdated: 1458014400000 }

#### Returns:

Object:

The meta information for the belongs-to relationship.

### `remoteType`

() String

Defined in `addon/-private/system/references/reference.ts:41`

This returns a string that represents how the reference will be looked up when it is loaded. If the relationship has a link it will use the "link" otherwise it defaults to "id".

Example

    export default DS.Model.extend({
      comments: DS.hasMany({ async: true })
    });

    let post = store.push({
      data: {
        type: 'post',
        id: 1,
        relationships: {
          comments: {
            data: [{ type: 'comment', id: 1 }]
          }
        }
      }
    });

    let commentsRef = post.hasMany('comments');

    // get the identifier of the reference
    if (commentsRef.remoteType() === "ids") {
      let ids = commentsRef.ids();
    } else if (commentsRef.remoteType() === "link") {
      let link = commentsRef.link();
    }

#### Returns:

String:

The name of the remote type. This should either be "link" or "ids"