Skip to content

cozy-client / HasMany

Class: HasMany

Related documents are stored in the relationships attribute of the object, following the JSON API spec.

Responsible for

  • Creating relationships
  • Removing relationships

description

const schema = {
  todos: {
     doctype: 'io.cozy.todos',
     relationships: {
       tasks: {
         doctype: 'io.cozy.tasks',
         type: 'has-many'
       }
     }
   }
}

const todo = {
  label: "Protect people's privacy",
  relationships: {
    tasks: {
      data: [
        {_id: 1, _type: 'io.cozy.tasks'},
        {_id: 2, _type: 'io.cozy.tasks'}
      ]
    }
  }
}

Hierarchy

Constructors

constructor

new HasMany(target, name, doctype, options)

Parameters

Name Type Description
target any Original object containing raw data
name string Attribute under which the association is stored
doctype string Doctype of the documents managed by the association
options Object Options passed from the client
options.dispatch Function Store’s dispatch, comes from the client
options.get Function Get a document from the store
options.mutate Function Execute client mutate
options.query Function Execute client query
options.save Function Execute client save

Inherited from

Association.constructor

Defined in

packages/cozy-client/src/associations/Association.js:87

Properties

dispatch

dispatch: Function

Dispatch an action on the store.

Inherited from

Association.dispatch

Defined in

packages/cozy-client/src/associations/Association.js:144


doctype

doctype: string

Doctype of the relationship

example ‘io.cozy.authors’

Inherited from

Association.doctype

Defined in

packages/cozy-client/src/associations/Association.js:109


get

get: Function

Returns the document from the store

Inherited from

Association.get

Defined in

packages/cozy-client/src/associations/Association.js:116


mutate

mutate: Function

Performs a mutation on the relationship.

function

Inherited from

Association.mutate

Defined in

packages/cozy-client/src/associations/Association.js:131


name

name: string

The name of the relationship.

example ‘author’

Inherited from

Association.name

Defined in

packages/cozy-client/src/associations/Association.js:101


query

query: Function

Performs a query to retrieve relationship documents.

param

function

Inherited from

Association.query

Defined in

packages/cozy-client/src/associations/Association.js:124


save

save: Function

Saves the relationship in store.

Inherited from

Association.save

Defined in

packages/cozy-client/src/associations/Association.js:138


target

target: any

The original document declaring the relationship

Inherited from

Association.target

Defined in

packages/cozy-client/src/associations/Association.js:94

Accessors

count

get count(): number

Returns the total number of documents in the relationship. Does not handle documents absent from the store. If you want to do that, you can use .data.length.

Returns

number

  • Total number of documents in the relationships

Defined in

packages/cozy-client/src/associations/HasMany.js:93


data

get data(): any

Returns store documents

Returns

any

Overrides

Association.data

Defined in

packages/cozy-client/src/associations/HasMany.js:76


hasMore

get hasMore(): any

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:82


raw

get raw(): any

Returns

any

Overrides

Association.raw

Defined in

packages/cozy-client/src/associations/HasMany.js:69

Methods

add

add(docsArg): CozyClientDocument

Add the relationships to the target document

Parameters

Name Type Description
docsArg CozyClientDocument[] Documents to add as relationships

Returns

CozyClientDocument

The saved target document

Defined in

packages/cozy-client/src/associations/HasMany.js:124


addById

addById(idsArg): any

Add a referenced document by id. You need to call save() in order to synchronize your document with the store.

todo We shouldn’t create the array of relationship manually since it’ll not be present in the store as well. We certainly should use something like updateRelationship

Parameters

Name Type
idsArg any

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:174


addTargetRelationships

addTargetRelationships(idsArg): void

Update target document with relationships

Parameters

Name Type Description
idsArg string[] The ids to add as a relationship

Returns

void

Defined in

packages/cozy-client/src/associations/HasMany.js:147


containsById

containsById(id): boolean

Parameters

Name Type
id any

Returns

boolean

Defined in

packages/cozy-client/src/associations/HasMany.js:108


dehydrate

dehydrate(doc): any

Parameters

Name Type
doc any

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:256


exists

exists(document): boolean

Parameters

Name Type
document any

Returns

boolean

Defined in

packages/cozy-client/src/associations/HasMany.js:104


existsById

existsById(id): boolean

Parameters

Name Type
id any

Returns

boolean

Defined in

packages/cozy-client/src/associations/HasMany.js:114


fetchMore

fetchMore(): void

Returns

void

Defined in

packages/cozy-client/src/associations/HasMany.js:100


getRelationship

getRelationship(): any

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:207


remove

remove(docsArg): CozyClientDocument

Remove the relationships from the target document

Parameters

Name Type Description
docsArg CozyClientDocument[] Documents to remove as relationships

Returns

CozyClientDocument

The saved target document

Defined in

packages/cozy-client/src/associations/HasMany.js:136


removeById

removeById(idsArg): any

Parameters

Name Type
idsArg any

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:193


removeTargetRelationships

removeTargetRelationships(idsArg): void

Remove relationships from target document

Parameters

Name Type Description
idsArg string[] The ids to remove from the target relationships

Returns

void

Defined in

packages/cozy-client/src/associations/HasMany.js:184


updateMetaCount

updateMetaCount(): void

Returns

void

Defined in

packages/cozy-client/src/associations/HasMany.js:198


updateRelationship

updateRelationship(target, updateFn): any

Parameters

Name Type
target any
updateFn any

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:228


updateRelationshipData

updateRelationshipData(getUpdatedRelationshipData): (dispatch: any, getState: any) => void

Parameters

Name Type
getUpdatedRelationshipData any

Returns

fn

▸ (dispatch, getState): void

Parameters

Name Type
dispatch any
getState any

Returns

void

Defined in

packages/cozy-client/src/associations/HasMany.js:232


updateTargetRelationship

updateTargetRelationship(store, updateFn): void

Parameters

Name Type
store any
updateFn any

Returns

void

Defined in

packages/cozy-client/src/associations/HasMany.js:221


getHasManyItem

Static getHasManyItem(doc, relName, relItemId): any

Parameters

Name Type
doc any
relName string
relItemId string

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:289


getHasManyItems

Static getHasManyItems(doc, relName): any

Parameters

Name Type
doc any
relName any

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:298


query

Static query(document, client, assoc): CozyClientDocument | QueryDefinition

Parameters

Name Type Description
document CozyClientDocument Document to query
client any The CozyClient instance
assoc Association The query params

Returns

CozyClientDocument | QueryDefinition

Overrides

Association.query

Defined in

packages/cozy-client/src/associations/HasMany.js:275


removeHasManyItem

Static removeHasManyItem(doc, relName, relItemId): any

Parameters

Name Type
doc any
relName string
relItemId string

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:336


setHasManyItem

Static setHasManyItem(doc, relName, relItemId, relItemAttrs): any

Parameters

Name Type
doc any
relName string
relItemId string
relItemAttrs any

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:310


updateHasManyItem

Static updateHasManyItem(doc, relName, relItemId, updater): any

Parameters

Name Type
doc any
relName string
relItemId string
updater Function

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:360


updateRelationship

Static updateRelationship(doc, relName, updateFn): any

Parameters

Name Type
doc any
relName any
updateFn any

Returns

any

Defined in

packages/cozy-client/src/associations/HasMany.js:371