# Class: BNote

## BNote()

Trilium's main entity, which can represent text note, image, code note, file attachment etc.

## Constructor

#### new BNote()

Source:
  - becca/entities/bnote.js, line 25

### Extends

- AbstractBeccaEntity

### Members

#### __flatTextCache :string|null

##### Type:

- string | null

Source:
  - becca/entities/bnote.js, line 90

#### (protected) becca

Overrides:
  - AbstractBeccaEntity#becca
Source:
  - becca/entities/abstract_becca_entity.js, line 55

#### blobId :string

##### Type:

- string

Source:
  - becca/entities/bnote.js, line 70

#### dateCreated :string

##### Type:

- string

Source:
  - becca/entities/bnote.js, line 72

#### dateModified :string

##### Type:

- string

Source:
  - becca/entities/bnote.js, line 74

#### isBeingDeleted :boolean

- set during the deletion operation, before it is completed (removed from becca completely)

##### Type:

- boolean

Source:
  - becca/entities/bnote.js, line 80

#### isDecrypted :boolean

##### Type:

- boolean

Source:
  - becca/entities/bnote.js, line 85

#### isProtected :boolean

##### Type:

- boolean

Source:
  - becca/entities/bnote.js, line 68

#### mime :string

##### Type:

- string

Source:
  - becca/entities/bnote.js, line 66

#### noteId :string

##### Type:

- string

Source:
  - becca/entities/bnote.js, line 60

#### title :string

##### Type:

- string

Source:
  - becca/entities/bnote.js, line 62

#### type :string

##### Type:

- string

Source:
  - becca/entities/bnote.js, line 64

#### utcDateCreated :string

##### Type:

- string

Source:
  - becca/entities/bnote.js, line 76

#### utcDateModified :string

##### Type:

- string

Source:
  - becca/entities/bnote.js, line 78

### Methods

#### (protected) _getContent() → {string|Buffer}

Overrides:
  - AbstractBeccaEntity#_getContent
Source:
  - becca/entities/abstract_becca_entity.js, line 246

##### Returns:

Type
  string | Buffer

#### (protected) _setContent()

Overrides:
  - AbstractBeccaEntity#_setContent
Source:
  - becca/entities/abstract_becca_entity.js, line 124

#### addAttribute(type, name, valueopt, isInheritableopt, positionopt) → {BAttribute}

Adds a new attribute to this note. The attribute is saved and returned. See addLabel, addRelation for more specific methods.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`type` | string |  |  | attribute type (label / relation)
`name` | string |  |  | name of the attribute, not including the leading ~/#
`value` | string | <optional> |  | value of the attribute - text for labels, target note ID for relations; optional.
`isInheritable` | boolean | <optional> | false |
`position` | int | null | <optional> | null |

Source:
  - becca/entities/bnote.js, line 1308

##### Returns:

Type
  BAttribute

#### addLabel(name, valueopt, isInheritableopt) → {BAttribute}

Adds a new label to this note. The label attribute is saved and returned.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`name` | string |  |  | name of the label, not including the leading #
`value` | string | <optional> |  | text value of the label; optional
`isInheritable` | boolean | <optional> | false |

Source:
  - becca/entities/bnote.js, line 1329

##### Returns:

Type
  BAttribute

#### addRelation(name, targetNoteId, isInheritableopt) → {BAttribute}

Adds a new relation to this note. The relation attribute is saved and returned.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`name` | string |  |  | name of the relation, not including the leading ~
`targetNoteId` | string |  |  |
`isInheritable` | boolean | <optional> | false |

Source:
  - becca/entities/bnote.js, line 1342

##### Returns:

Type
  BAttribute

#### (protected) beforeSaving()

Overrides:
  - AbstractBeccaEntity#beforeSaving
Source:
  - becca/entities/abstract_becca_entity.js, line 20

#### cloneTo(parentNoteId) → {Object}

##### Parameters:

Name | Type | Description
--- | --- | ---
`parentNoteId` |  |

Source:
  - becca/entities/bnote.js, line 1427

##### Returns:

Type
  Object

#### convertToParentAttachment() → {BAttachment|null}

Some notes are eligible for conversion into an attachment of its parent, note must have these properties: - it has exactly one target relation - it has a relation from its parent note - it has no children - it has no clones - the parent is of type text - both notes are either unprotected or user is in protected session Currently, works only for image notes. In the future, this functionality might get more generic and some of the requirements relaxed.

Source:
  - becca/entities/bnote.js, line 1479

##### Returns:

- null if note is not eligible for conversion

Type
  BAttachment | null

#### deleteNote(deleteIdopt, taskContextopt)

(Soft) delete a note and all its descendants.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`deleteId` | string | <optional> | null | optional delete identified
`taskContext` | TaskContext | <optional> | null |

Source:
  - becca/entities/bnote.js, line 1517

#### (protected) generateHash()

Overrides:
  - AbstractBeccaEntity#generateHash
Source:
  - becca/entities/abstract_becca_entity.js, line 32

#### (protected) generateIdIfNecessary()

Overrides:
  - AbstractBeccaEntity#generateIdIfNecessary
Source:
  - becca/entities/abstract_becca_entity.js, line 25

#### getAllNotePaths() → {Array.<Array.<string>>}

Gives all possible note paths leading to this note. Paths containing search note are ignored (could form cycles)

Source:
  - becca/entities/bnote.js, line 1149

##### Returns:

- array of notePaths (each represented by array of noteIds constituting the particular note path)

Type
  Array.<Array.<string>>

#### getAncestorNoteIds() → {Array.<string>}

Source:
  - becca/entities/bnote.js, line 1037

##### Returns:

Type
  Array.<string>

#### getAncestors() → {Array.<BNote>}

Source:
  - becca/entities/bnote.js, line 1011

##### Returns:

Type
  Array.<BNote>

#### getAttachmentById() → {BAttachment|null}

Source:
  - becca/entities/bnote.js, line 1118

##### Returns:

Type
  BAttachment | null

#### getAttachmentByRole() → {Array.<BAttachment>}

Source:
  - becca/entities/bnote.js, line 1133

##### Returns:

Type
  Array.<BAttachment>

#### getAttachments() → {Array.<BAttachment>}

Source:
  - becca/entities/bnote.js, line 1100

##### Returns:

Type
  Array.<BAttachment>

#### getAttribute(type, name) → {BAttribute}

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | string | attribute type (label, relation, etc.)
`name` | string | attribute name

Source:
  - becca/entities/bnote.js, line 574

##### Returns:

attribute of the given type and name. If there are more such attributes, first is returned. Returns null if there's no such attribute belonging to this note.

Type
  BAttribute

#### getAttributeValue(type, name) → {string|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | string | attribute type (label, relation, etc.)
`name` | string | attribute name

Source:
  - becca/entities/bnote.js, line 585

##### Returns:

attribute value of given type and name or null if no such attribute exists.

Type
  string | null

#### getAttributes(typeopt, nameopt) → {Array.<BAttribute>}

Beware that the method must not create a copy of the array, but actually returns its internal array (for performance reasons)

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`type` | string | <optional> | (optional) attribute type to filter
`name` | string | <optional> | (optional) attribute name to filter

Source:
  - becca/entities/bnote.js, line 327

##### Returns:

all note's attributes, including inherited ones

Type
  Array.<BAttribute>

#### getBestNotePath(hoistedNoteIdopt) → {Array.<string>}

Returns a note path considered to be the "best"

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`hoistedNoteId` | string | <optional> | 'root' |

Source:
  - becca/entities/bnote.js, line 1202

##### Returns:

array of noteIds constituting the particular note path

Type
  Array.<string>

#### getBestNotePathString(hoistedNoteIdopt) → {string}

Returns a note path considered to be the "best"

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`hoistedNoteId` | string | <optional> | 'root' |

Source:
  - becca/entities/bnote.js, line 1212

##### Returns:

serialized note path (e.g. 'root/a1h315/js725h')

Type
  string

#### getBranches() → {Array.<BBranch>}

Deprecated:
  - use getParentBranches() instead
Source:
  - becca/entities/bnote.js, line 176

##### Returns:

Type
  Array.<BBranch>

#### getChildBranches() → {Array.<BBranch>}

Source:
  - becca/entities/bnote.js, line 196

##### Returns:

Type
  Array.<BBranch>

#### getChildNotes() → {Array.<BNote>}

Source:
  - becca/entities/bnote.js, line 186

##### Returns:

Type
  Array.<BNote>

#### getContent() → {string|Buffer}

Source:
  - becca/entities/bnote.js, line 210

##### Returns:

Type
  string | Buffer

#### getContentMetadata() → {Object}

Source:
  - becca/entities/bnote.js, line 215

##### Returns:

Type
  Object

#### getDescendantNoteIds()

Deprecated:
  - use getSubtreeNoteIds() instead
Source:
  - becca/entities/bnote.js, line 958

#### getFlatText() → {string}

This is used for: - fast searching - note similarity evaluation

Source:
  - becca/entities/bnote.js, line 759

##### Returns:

- returns flattened textual representation of note, prefixes and attributes

Type
  string

#### getInheritingNotes() → {Array.<BNote>}

Source:
  - becca/entities/bnote.js, line 1063

##### Returns:

- returns only notes which are templated, does not include their subtrees in effect returns notes which are influenced by note's non-inheritable attributes

Type
  Array.<BNote>

#### getJsonContent() → {*}

Source:
  - becca/entities/bnote.js, line 220

##### Returns:

Type
  *

#### getLabel(name) → {BAttribute|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - becca/entities/bnote.js, line 514

##### Returns:

label if it exists, null otherwise

Type
  BAttribute | null

#### getLabelValue(name) → {string|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - becca/entities/bnote.js, line 538

##### Returns:

label value if label exists, null otherwise

Type
  string | null

#### getLabelValues(nameopt) → {Array.<string>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | label name to filter

Source:
  - becca/entities/bnote.js, line 614

##### Returns:

all note's label values, including inherited ones

Type
  Array.<string>

#### getLabels(nameopt) → {Array.<BAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | label name to filter

Source:
  - becca/entities/bnote.js, line 606

##### Returns:

all note's labels (attributes with type label), including inherited ones

Type
  Array.<BAttribute>

#### getOwnedAttribute() → {BAttribute}

Source:
  - becca/entities/bnote.js, line 684

##### Returns:

attribute belonging to this specific note (excludes inherited attributes) This method can be significantly faster than the getAttribute()

Type
  BAttribute

#### getOwnedAttributeValue(type, name) → {string|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | string | attribute type (label, relation, etc.)
`name` | string | attribute name

Source:
  - becca/entities/bnote.js, line 596

##### Returns:

attribute value of given type and name or null if no such attribute exists.

Type
  string | null

#### getOwnedAttributes(typeopt, nameopt, valueopt) → {Array.<BAttribute>}

Beware that the method must not create a copy of the array, but actually returns its internal array (for performance reasons)

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`type` | string | null | <optional> | null | (optional) attribute type to filter
`name` | string | null | <optional> | null | (optional) attribute name to filter
`value` | string | null | <optional> | null | (optional) attribute value to filter

Source:
  - becca/entities/bnote.js, line 659

##### Returns:

note's "owned" attributes - excluding inherited ones

Type
  Array.<BAttribute>

#### getOwnedLabel(name) → {BAttribute|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - becca/entities/bnote.js, line 520

##### Returns:

label if it exists, null otherwise

Type
  BAttribute | null

#### getOwnedLabelValue(name) → {string|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - becca/entities/bnote.js, line 544

##### Returns:

label value if label exists, null otherwise

Type
  string | null

#### getOwnedLabelValues(nameopt) → {Array.<string>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | label name to filter

Source:
  - becca/entities/bnote.js, line 630

##### Returns:

all note's label values, excluding inherited ones

Type
  Array.<string>

#### getOwnedLabels(nameopt) → {Array.<BAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | label name to filter

Source:
  - becca/entities/bnote.js, line 622

##### Returns:

all note's labels (attributes with type label), excluding inherited ones

Type
  Array.<BAttribute>

#### getOwnedRelation(name) → {BAttribute|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - becca/entities/bnote.js, line 532

##### Returns:

relation if it exists, null otherwise

Type
  BAttribute | null

#### getOwnedRelationValue(name) → {string|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - becca/entities/bnote.js, line 556

##### Returns:

relation value if relation exists, null otherwise

Type
  string | null

#### getOwnedRelations(nameopt) → {Array.<BAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | relation name to filter

Source:
  - becca/entities/bnote.js, line 646

##### Returns:

all note's relations (attributes with type relation), excluding inherited ones

Type
  Array.<BAttribute>

#### getParentBranches() → {Array.<BBranch>}

Source:
  - becca/entities/bnote.js, line 159

##### Returns:

Type
  Array.<BBranch>

#### getParentNotes() → {Array.<BNote>}

Source:
  - becca/entities/bnote.js, line 181

##### Returns:

Type
  Array.<BNote>

#### (protected) getPojoToSave()

Overrides:
  - AbstractBeccaEntity#getPojoToSave
Source:
  - becca/entities/abstract_becca_entity.js, line 76

#### getRelation(name) → {BAttribute|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - becca/entities/bnote.js, line 526

##### Returns:

relation if it exists, null otherwise

Type
  BAttribute | null

#### getRelationValue(name) → {string|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - becca/entities/bnote.js, line 550

##### Returns:

relation value if relation exists, null otherwise

Type
  string | null

#### getRelations(nameopt) → {Array.<BAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | relation name to filter

Source:
  - becca/entities/bnote.js, line 638

##### Returns:

all note's relations (attributes with type relation), including inherited ones

Type
  Array.<BAttribute>

#### getRevisions() → {Array.<BRevision>}

Source:
  - becca/entities/bnote.js, line 1094

##### Returns:

Type
  Array.<BRevision>

#### getScriptEnv() → {string|null}

Source:
  - becca/entities/bnote.js, line 303

##### Returns:

JS script environment - either "frontend" or "backend"

Type
  string | null

#### getSearchResultNotes() → {Array.<BNote>}

Source:
  - becca/entities/bnote.js, line 869

##### Returns:

Type
  Array.<BNote>

#### getSortedNotePathRecords(hoistedNoteIdopt) → {Array.<{isArchived: boolean, isInHoistedSubTree: boolean, notePath: Array.<string>, isHidden: boolean}>}

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`hoistedNoteId` | string | <optional> | 'root' |

Source:
  - becca/entities/bnote.js, line 1171

##### Returns:

Type
  Array.<{isArchived: boolean, isInHoistedSubTree: boolean, notePath: Array.<string>, isHidden: boolean}>

#### getStrongParentBranches() → {Array.<BBranch>}

Returns strong (as opposed to weak) parent branches. See isWeak for details.

Source:
  - becca/entities/bnote.js, line 168

##### Returns:

Type
  Array.<BBranch>

#### getSubtree() → {Object}

Source:
  - becca/entities/bnote.js, line 892

##### Returns:

Type
  Object

#### getSubtreeNoteIds() → {Array.<string>}

Source:
  - becca/entities/bnote.js, line 951

##### Returns:

- includes the subtree root note as well

Type
  Array.<string>

#### getSubtreeNotesIncludingTemplated() → {Array.<BNote>}

Source:
  - becca/entities/bnote.js, line 837

##### Returns:

Type
  Array.<BNote>

#### getTargetRelations() → {Array.<BAttribute>}

Source:
  - becca/entities/bnote.js, line 1057

##### Returns:

Type
  Array.<BAttribute>

#### (protected) getUtcDateChanged()

Overrides:
  - AbstractBeccaEntity#getUtcDateChanged
Source:
  - becca/entities/abstract_becca_entity.js, line 47

#### hasAncestor() → {boolean}

Source:
  - becca/entities/bnote.js, line 1042

##### Returns:

Type
  boolean

#### hasAttribute(type, name, valueopt) → {boolean}

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`type` |  |  |  |
`name` |  |  |  |
`value` |  | <optional> | null |

Source:
  - becca/entities/bnote.js, line 444

##### Returns:

Type
  boolean

#### hasChildren() → {boolean}

Source:
  - becca/entities/bnote.js, line 191

##### Returns:

Type
  boolean

#### hasLabel(name, valueopt) → {boolean}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string |  | label name
`value` | string | <optional> | label value

Source:
  - becca/entities/bnote.js, line 473

##### Returns:

true if label exists (including inherited)

Type
  boolean

#### hasOwnedAttribute(type, name, valueopt) → {boolean}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`type` | string |  | attribute type (label, relation, etc.)
`name` | string |  | attribute name
`value` | string | <optional> | attribute value

Source:
  - becca/entities/bnote.js, line 564

##### Returns:

true if note has an attribute with given type and name (excluding inherited)

Type
  boolean

#### hasOwnedLabel(name, valueopt) → {boolean}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string |  | label name
`value` | string | <optional> | label value

Source:
  - becca/entities/bnote.js, line 494

##### Returns:

true if label exists (excluding inherited)

Type
  boolean

#### hasOwnedRelation(name, valueopt) → {boolean}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string |  | relation name
`value` | string | <optional> | relation value

Source:
  - becca/entities/bnote.js, line 508

##### Returns:

true if relation exists (excluding inherited)

Type
  boolean

#### hasRelation(name, valueopt) → {boolean}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string |  | relation name
`value` | string | <optional> | relation value

Source:
  - becca/entities/bnote.js, line 501

##### Returns:

true if relation exists (including inherited)

Type
  boolean

#### hasStringContent() → {boolean}

Source:
  - becca/entities/bnote.js, line 298

##### Returns:

true if the note has string content (not binary)

Type
  boolean

#### isDescendantOfNote(ancestorNoteId) → {boolean}

##### Parameters:

Name | Type | Description
--- | --- | ---
`ancestorNoteId` |  |

Source:
  - becca/entities/bnote.js, line 1243

##### Returns:

- true if ancestorNoteId occurs in at least one of the note's paths

Type
  boolean

#### isHiddenCompletely()

Source:
  - becca/entities/bnote.js, line 1221

##### Returns:

boolean - true if there's no non-hidden path, note is not cloned to the visible tree

#### isHtml() → {boolean}

Source:
  - becca/entities/bnote.js, line 281

##### Returns:

true if this note is HTML

Type
  boolean

#### isImage() → {boolean}

Source:
  - becca/entities/bnote.js, line 287

##### Returns:

true if this note is an image

Type
  boolean

#### isJavaScript() → {boolean}

Source:
  - becca/entities/bnote.js, line 273

##### Returns:

true if this note is JavaScript (code or attachment)

Type
  boolean

#### isJson() → {boolean}

Source:
  - becca/entities/bnote.js, line 268

##### Returns:

true if this note is of application/json content type

Type
  boolean

#### isLabelTruthy(name) → {boolean}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - becca/entities/bnote.js, line 479

##### Returns:

true if label exists (including inherited) and does not have "false" value.

Type
  boolean

#### isRoot() → {boolean}

Source:
  - becca/entities/bnote.js, line 263

##### Returns:

true if this note is the root of the note tree. Root note has "root" noteId

Type
  boolean

#### isStringNote()

Deprecated:
  - use hasStringContent() instead
Source:
  - becca/entities/bnote.js, line 293

#### markAsDeleted(deleteIdopt)

Mark the entity as (soft) deleted. It will be completely erased later. This is a low-level method, for notes and branches use `note.deleteNote()` and 'branch.deleteBranch()` instead.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`deleteId` |  | <optional> | null |

Overrides:
  - AbstractBeccaEntity#markAsDeleted
Source:
  - becca/entities/abstract_becca_entity.js, line 263

#### (protected) putEntityChange()

Overrides:
  - AbstractBeccaEntity#putEntityChange
Source:
  - becca/entities/abstract_becca_entity.js, line 64

#### removeAttribute(type, name, valueopt)

Removes given attribute name-value pair if it exists.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`type` | string |  | attribute type (label, relation, etc.)
`name` | string |  | attribute name
`value` | string | <optional> | attribute value (optional)

Source:
  - becca/entities/bnote.js, line 1287

#### removeLabel(name, valueopt)

Remove label name-value pair, if it exists.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string |  | label name
`value` | string | <optional> | label value

Source:
  - becca/entities/bnote.js, line 1403

#### removeRelation(name, valueopt)

Remove the relation name-value pair, if it exists.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string |  | relation name
`value` | string | <optional> | relation value (noteId)

Source:
  - becca/entities/bnote.js, line 1411

#### save() → {this}

Saves entity - executes SQL, but doesn't commit the transaction on its own

Overrides:
  - AbstractBeccaEntity#save
Source:
  - becca/entities/abstract_becca_entity.js, line 85

##### Returns:

Type
  this

#### saveAttachment() → {BAttachment}

Source:
  - becca/entities/bnote.js, line 1624

##### Returns:

Type
  BAttachment

#### saveRevision() → {BRevision|null}

Source:
  - becca/entities/bnote.js, line 1571

##### Returns:

Type
  BRevision | null

#### setAttribute(type, name, valueopt)

Update's given attribute's value or creates it if it doesn't exist

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`type` | string |  | attribute type (label, relation, etc.)
`name` | string |  | attribute name
`value` | string | <optional> | attribute value (optional)

Source:
  - becca/entities/bnote.js, line 1256

#### setContent(content, optsopt)

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`content` |  |  |
`opts` | object | <optional> | ###### Properties
Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`forceSave` | object | <optional> | false | will also save this BNote entity
`forceFrontendReload` | object | <optional> | false | override frontend heuristics on when to reload, instruct to reload

Source:
  - becca/entities/bnote.js, line 236

#### setLabel(name, valueopt)

Update's given label's value or creates it if it doesn't exist

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string |  | label name
`value` | string | <optional> | label value

Source:
  - becca/entities/bnote.js, line 1387

#### setRelation(name, value)

Update's given relation's value or creates it if it doesn't exist

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name
`value` | string | relation value (noteId)

Source:
  - becca/entities/bnote.js, line 1395

#### toggleAttribute(type, enabled, name, valueopt)

Based on enabled, the attribute is either set or removed.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`type` | string |  | attribute type ('relation', 'label' etc.)
`enabled` | boolean |  | toggle On or Off
`name` | string |  | attribute name
`value` | string | <optional> | attribute value (optional)

Source:
  - becca/entities/bnote.js, line 1354

#### toggleLabel(enabled, name, valueopt)

Based on enabled, label is either set or removed.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`enabled` | boolean |  | toggle On or Off
`name` | string |  | label name
`value` | string | <optional> | label value (optional)

Source:
  - becca/entities/bnote.js, line 1370

#### toggleRelation(enabled, name, valueopt)

Based on enabled, relation is either set or removed.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`enabled` | boolean |  | toggle On or Off
`name` | string |  | relation name
`value` | string | <optional> | relation value (noteId)

Source:
  - becca/entities/bnote.js, line 1379