Class: BNote

BNote()

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

Constructor

new BNote()

Source:

Extends

Members

__flatTextCache :string|null

Type:
  • string | null
Source:

(protected) becca

Overrides:
Source:

blobId :string

Type:
  • string
Source:

dateCreated :string

Type:
  • string
Source:

dateModified :string

Type:
  • string
Source:

isBeingDeleted :boolean

set during the deletion operation, before it is completed (removed from becca completely)
Type:
  • boolean
Source:

isDecrypted :boolean

Type:
  • boolean
Source:

isProtected :boolean

Type:
  • boolean
Source:

mime :string

Type:
  • string
Source:

noteId :string

Type:
  • string
Source:

title :string

Type:
  • string
Source:

type :NoteType

Type:
Source:

utcDateCreated :string

Type:
  • string
Source:

utcDateModified :string

Type:
  • string
Source:

Methods

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

Overrides:
Source:
Returns:
Type
string | Buffer

(protected) _setContent()

Overrides:
Source:

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:
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:
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:
Returns:
Type
BAttribute

(protected) beforeSaving()

Overrides:
Source:

cloneTo(parentNoteId) → {Object}

Parameters:
Name Type Description
parentNoteId
Source:
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:
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:

(protected) generateHash() → {string}

Overrides:
Source:
Returns:
Type
string

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

Gives all possible note paths leading to this note. Paths containing search note are ignored (could form cycles)
Source:
Returns:
- array of notePaths (each represented by array of noteIds constituting the particular note path)
Type
Array.<Array.<string>>

getAncestorNoteIds() → {Array.<string>}

Source:
Returns:
Type
Array.<string>

getAncestors() → {Array.<BNote>}

Source:
Returns:
Type
Array.<BNote>

getAttachmentById() → {BAttachment|null}

Source:
Returns:
Type
BAttachment | null

getAttachmentByTitle() → {BAttachment}

Source:
Returns:
Type
BAttachment

getAttachments() → {Array.<BAttachment>}

Source:
Returns:
Type
Array.<BAttachment>

getAttachmentsByRole() → {Array.<BAttachment>}

Source:
Returns:
Type
Array.<BAttachment>

getAttribute(type, name) → {BAttribute}

Parameters:
Name Type Description
type string attribute type (label, relation, etc.)
name string attribute name
Source:
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:
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:
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:
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:
Returns:
serialized note path (e.g. 'root/a1h315/js725h')
Type
string

getBranches() → {Array.<BBranch>}

Deprecated:
  • use getParentBranches() instead
Source:
Returns:
Type
Array.<BBranch>

getChildBranches() → {Array.<BBranch>}

Source:
Returns:
Type
Array.<BBranch>

getChildNotes() → {Array.<BNote>}

Source:
Returns:
Type
Array.<BNote>

getContent() → {string|Buffer}

Source:
Returns:
Type
string | Buffer

getDescendantNoteIds()

Deprecated:
  • use getSubtreeNoteIds() instead
Source:

getFlatText() → {string}

This is used for: - fast searching - note similarity evaluation
Source:
Returns:
- returns flattened textual representation of note, prefixes and attributes
Type
string

getInheritingNotes() → {Array.<BNote>}

Source:
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:
Throws:
Error in case of invalid JSON
Returns:
Type
*

getJsonContentSafely() → {*|null}

Source:
Returns:
valid object or null if the content cannot be parsed as JSON
Type
* | null

getLabel(name) → {BAttribute|null}

Parameters:
Name Type Description
name string label name
Source:
Returns:
label if it exists, null otherwise
Type
BAttribute | null

getLabelValue(name) → {string|null}

Parameters:
Name Type Description
name string label name
Source:
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:
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:
Returns:
all note's labels (attributes with type label), including inherited ones
Type
Array.<BAttribute>

getOwnedAttribute() → {BAttribute}

Source:
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:
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:
Returns:
note's "owned" attributes - excluding inherited ones
Type
Array.<BAttribute>

getOwnedLabel(name) → {BAttribute|null}

Parameters:
Name Type Description
name string label name
Source:
Returns:
label if it exists, null otherwise
Type
BAttribute | null

getOwnedLabelValue(name) → {string|null}

Parameters:
Name Type Description
name string label name
Source:
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:
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:
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:
Returns:
relation if it exists, null otherwise
Type
BAttribute | null

getOwnedRelationValue(name) → {string|null}

Parameters:
Name Type Description
name string relation name
Source:
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:
Returns:
all note's relations (attributes with type relation), excluding inherited ones
Type
Array.<BAttribute>

getParentBranches() → {Array.<BBranch>}

Source:
Returns:
Type
Array.<BBranch>

getParentNotes() → {Array.<BNote>}

Source:
Returns:
Type
Array.<BNote>

(abstract, protected) getPojo()

Overrides:
Source:

(protected) getPojoToSave()

Overrides:
Source:

getRelation(name) → {BAttribute|null}

Parameters:
Name Type Description
name string relation name
Source:
Returns:
relation if it exists, null otherwise
Type
BAttribute | null

getRelationValue(name) → {string|null}

Parameters:
Name Type Description
name string relation name
Source:
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:
Returns:
all note's relations (attributes with type relation), including inherited ones
Type
Array.<BAttribute>

getRevisions() → {Array.<BRevision>}

Source:
Returns:
Type
Array.<BRevision>

getScriptEnv() → {string|null}

Source:
Returns:
JS script environment - either "frontend" or "backend"
Type
string | null

getSearchResultNotes() → {Array.<BNote>}

Source:
Returns:
Type
Array.<BNote>

getSortedNotePathRecords(hoistedNoteIdopt) → {Array.<NotePathRecord>}

Parameters:
Name Type Attributes Default Description
hoistedNoteId string <optional>
'root'
Source:
Returns:
Type
Array.<NotePathRecord>

getStrongParentBranches() → {Array.<BBranch>}

Returns strong (as opposed to weak) parent branches. See isWeak for details.
Source:
Returns:
Type
Array.<BBranch>

getSubtree() → {Object}

Source:
Returns:
Type
Object

getSubtreeNoteIds() → {Array.<string>}

Source:
Returns:
- includes the subtree root note as well
Type
Array.<string>

getSubtreeNotesIncludingTemplated() → {Array.<BNote>}

Source:
Returns:
Type
Array.<BNote>

getTargetRelations() → {Array.<BAttribute>}

Source:
Returns:
Type
Array.<BAttribute>

(protected) getUtcDateChanged()

Overrides:
Source:

hasAncestor() → {boolean}

Source:
Returns:
Type
boolean

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

Parameters:
Name Type Attributes Default Description
type
name
value <optional>
null
Source:
Returns:
Type
boolean

hasChildren() → {boolean}

Source:
Returns:
Type
boolean

hasLabel(name, valueopt) → {boolean}

Parameters:
Name Type Attributes Description
name string label name
value string <optional>
label value
Source:
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:
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:
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:
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:
Returns:
true if relation exists (including inherited)
Type
boolean

hasStringContent() → {boolean}

Source:
Returns:
true if the note has string content (not binary)
Type
boolean

isDescendantOfNote(ancestorNoteId) → {boolean}

Parameters:
Name Type Description
ancestorNoteId
Source:
Returns:
- true if ancestorNoteId occurs in at least one of the note's paths
Type
boolean

isHiddenCompletely()

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

isHtml() → {boolean}

Source:
Returns:
true if this note is HTML
Type
boolean

isImage() → {boolean}

Source:
Returns:
true if this note is an image
Type
boolean

isJavaScript() → {boolean}

Source:
Returns:
true if this note is JavaScript (code or attachment)
Type
boolean

isJson() → {boolean}

Source:
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:
Returns:
true if label exists (including inherited) and does not have "false" value.
Type
boolean

isRoot() → {boolean}

Source:
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:

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:
Source:

(protected) putEntityChange()

Overrides:
Source:

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:

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:

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:

save() → {this}

Saves entity - executes SQL, but doesn't commit the transaction on its own
Overrides:
Source:
Returns:
Type
this

saveAttachment(matchBy) → {BAttachment}

Parameters:
Name Type Default Description
matchBy string attachmentId choose by which property we detect if to update an existing attachment. Supported values are either 'attachmentId' (default) or 'title'
Source:
Returns:
Type
BAttachment

saveRevision() → {BRevision|null}

Source:
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:

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:

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:

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:

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:

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:

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: