Class: Container

Container


new Container(opts)

import {Container} from 'js-data'

The Container class is a place to store Mapper instances.

Without a container, you need to manage mappers yourself, including resolving circular dependencies among relations. All mappers in a container share the same adapters, so you don't have to add each adapter to all of your mappers.

Parameters:
Name Type Argument Description
opts Object <optional>

Configuration options.

Properties
Name Type Argument Description
mapperClass function <optional>

Constructor function to use in Container#defineMapper to create a new mapper.

mapperDefaults Object <optional>

Defaults options to pass to Container#mapperClass when creating a new mapper.

Source:
Returns:
Type
Container
Examples

Without Container

import {Mapper} from 'js-data'
import HttpAdapter from 'js-data-http'
const adapter = new HttpAdapter()
const userMapper = new Mapper({ name: 'user' })
userMapper.registerAdapter('http', adapter, { default: true })
const commentMapper = new Mapper({ name: 'comment' })
commentMapper.registerAdapter('http', adapter, { default: true })

// This might be more difficult if the mappers were defined in different
// modules.
userMapper.hasMany(commentMapper, {
  localField: 'comments',
  foreignKey: 'userId'
})
commentMapper.belongsTo(userMapper, {
  localField: 'user',
  foreignKey: 'userId'
})

With Container

import {Container} from 'js-data'
import HttpAdapter from 'js-data-http'
const container = new Container()
// All mappers in container share adapters
container.registerAdapter('http', new HttpAdapter(), { default: true })

// These could be defined in separate modules without a problem.
container.defineMapper('user', {
  relations: {
    hasMany: {
      comment: {
        localField: 'comments',
        foreignKey: 'userId'
      }
    }
  }
})
container.defineMapper('comment', {
  relations: {
    belongsTo: {
      user: {
        localField: 'user',
        foreignKey: 'userId'
      }
    }
  }
})

Extends

Members


_listeners :Object

Event listeners attached to this Component. Do not modify. Use Component#on and Component#off instead.

Type:
  • Object
Inherited From:
Source:

mapperClass :function

Constructor function to use in Container#defineMapper to create a new mapper.

Type:
  • function
Source:

mapperDefaults :Object

Defaults options to pass to Container#mapperClass when creating a new mapper.

Type:
  • Object
Source:

Methods


count(name, query, opts)

Proxy for Mapper#count.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

query Object <optional>

Passed to Model.count.

opts Object <optional>

Passed to Model.count.

Source:
Returns:
Type
Promise

create(name, record, opts)

Proxy for Mapper#create.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

record Object

Passed to Mapper#create.

opts Object <optional>

Passed to Mapper#create. See Mapper#create for more configuration options.

Source:
Returns:
Type
Promise

createMany(name, records, opts)

Proxy for Mapper#createMany.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

records Array

Passed to Mapper#createMany.

opts Object <optional>

Passed to Mapper#createMany. See Mapper#createMany for more configuration options.

Source:
Returns:
Type
Promise

createRecord(name, props, opts)

Proxy for Mapper#createRecord.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

props Object

Passed to Mapper#createRecord.

opts Object <optional>

Passed to Mapper#createRecord. See Mapper#createRecord for configuration options.

Source:
Returns:
Type
Promise

dbg(name, args)

Proxy for Mapper#dbg.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

args * <repeatable>

Passed to Mapper#dbg.

Overrides:
Source:

defineMapper(name, opts)

Create a new mapper and register it in this container.

Parameters:
Name Type Argument Description
name string

Name under which to register the new Mapper. Mapper#name will be set to this value.

opts Object <optional>

Configuration options. Passed to Container#mapperClass when creating the new Mapper.

Source:
Returns:
Type
Mapper
Example
import {Container} from 'js-data'
const container = new Container({
  mapperDefaults: { foo: 'bar' }
})
const userMapper = container.defineMapper('user')
userMapper.foo // "bar"

destroy(name, id, opts)

Proxy for Mapper#destroy.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

id string | number

Passed to Mapper#destroy.

opts Object <optional>

Passed to Mapper#destroy. See Mapper#destroy for more configuration options.

Source:
Returns:
Type
Promise

destroyAll(name, query, opts)

Proxy for Mapper#destroyAll.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

query Object <optional>

Passed to Mapper#destroyAll.

opts Object <optional>

Passed to Mapper#destroyAll. See Mapper#destroyAll for more configuration options.

Source:
Returns:
Type
Promise

emit(event, args)

Trigger an event on this Component.

Parameters:
Name Type Argument Description
event string

Name of event to emit.

args * <optional>
<repeatable>

Arguments to pass to any listeners.

Inherited From:
Source:

find(name, id, opts)

Proxy for Mapper#find.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

id string | number

Passed to Mapper#find.

opts Object <optional>

Passed to Mapper#find.

Source:
Returns:
Type
Promise

findAll(name, query, opts)

Proxy for Mapper#createRecord.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

query Object <optional>

Passed to Model.findAll.

opts Object <optional>

Passed to Model.findAll.

Source:
Returns:
Type
Promise

getAdapter(name)

Return the registered adapter with the given name or the default adapter if no name is provided.

Parameters:
Name Type Argument Description
name string <optional>

The name of the adapter to retrieve.

Source:
Returns:

The adapter.

Type
Adapter

getAdapterName(opts)

Return the name of a registered adapter based on the given name or options, or the name of the default adapter if no name provided.

Parameters:
Name Type Argument Description
opts Object | string <optional>

The name of an adapter or options, if any.

Source:
Returns:

The name of the adapter.

Type
string

getAdapters()

Return the registered adapters of this container.

Source:
Returns:
Type
Adapter

getMapper(name)

Return the mapper registered under the specified name.

Parameters:
Name Type Description
name string

Mapper#name.

Source:
Returns:
Type
Mapper
Example
import {Container} from 'js-data'
const container = new Container()
const userMapper = container.defineMapper('user')
userMapper === container.getMapper('user') // true

getSchema(name)

Proxy for Mapper#is.

Parameters:
Name Type Description
name string

Name of the Mapper to target.

Source:

is(name, args)

Proxy for Mapper#is.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

args * <repeatable>

Passed to Mapper#is.

Source:

log(name, args)

Proxy for Mapper#log.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

args * <repeatable>

Passed to Mapper#log.

Overrides:
Source:

off(event, listener)

Remove an event listener from this Component. If no listener is provided, then all listeners for the specified event will be removed. If no event is specified then all listeners for all events will be removed.

Parameters:
Name Type Argument Description
event string <optional>

Name of event to unsubsribe to.

listener function <optional>

Listener to remove.

Inherited From:
Source:

on(event, listener, ctx)

Register a new event listener on this Container.

Proxy for Component#on. If an event was emitted by a Mapper in the Container, then the name of the Mapper will be prepended to the arugments passed to the listener.

Parameters:
Name Type Argument Description
event string

Name of event to subsribe to.

listener function

Listener function to handle the event.

ctx * <optional>

Optional content in which to invoke the listener.

Overrides:
Source:

registerAdapter(name, adapter, opts)

Register an adapter on this container under the given name. Adapters registered on a container are shared by all mappers in the container.

Parameters:
Name Type Argument Description
name string

The name of the adapter to register.

adapter Adapter

The adapter to register.

opts Object <optional>

Configuration options.

Properties
Name Type Argument Default Description
default boolean <optional>
false

Whether to make the adapter the default adapter for all Mappers in this container.

Source:
Example
import {Container} from 'js-data'
import HttpAdapter from 'js-data-http'
const container = new Container()
container.registerAdapter('http', new HttpAdapter, { default: true })

sum(name, field, query, opts)

Proxy for Mapper#sum.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

field string

Passed to Model.sum.

query Object <optional>

Passed to Model.sum.

opts Object <optional>

Passed to Model.sum.

Source:
Returns:
Type
Promise

toJSON(name, args)

Proxy for Mapper#toJSON.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

args * <repeatable>

Passed to Mapper#toJSON.

Source:

update(name, id, record, opts)

Proxy for Mapper#update.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

id string | number

Passed to Mapper#update.

record Object

Passed to Mapper#update.

opts Object <optional>

Passed to Mapper#update. See Mapper#update for more configuration options.

Source:
Returns:
Type
Promise

updateAll(name, query, props, opts)

Proxy for Mapper#updateAll.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

query Object <nullable>

Passed to Model.updateAll.

props Object

Passed to Model.updateAll.

opts Object <optional>

Passed to Model.updateAll. See Model.updateAll for more configuration options.

Source:
Returns:
Type
Promise

updateMany(name, records, opts)

Proxy for Mapper#updateMany.

Parameters:
Name Type Argument Description
name string

Name of the Mapper to target.

records Array.<Object> | Array.<Record>

Passed to Mapper#updateMany.

opts Object <optional>

Passed to Mapper#updateMany. See Mapper#updateMany for more configuration options.

Source:
Returns:
Type
Promise