Class: LobStorage

@nginstack/engine/lib/database/LobStorage~ LobStorage


new LobStorage(classKey)

Classe que possibilita armazenar no banco de dados grandes documentos que não demandam a hierarquia e atributos de um sistema de arquivos, como a VFS.

Esta classe não cria registros no cache local, ao contrário da VFS, sendo mais apropriada para armazenar grandes volumes de dados.

Outra vantagem da LobStorage sobre a VirtualFS é que os dados são comprimidos antes serem gravados, reduzindo o espaço necessário para armazenagem no banco de dados.

Parameters:
Name Type Description
classKey number | DBKey

Chave da classe filha de "/data/system/Large Objects" onde serão gravados os dados.

Members


classKey :number

Classe onde serão gravados os documentos salvos. Possui a finalidade de agrupar os documentos com a mesma finalidade na tabela iLob.

Type:
  • number

Methods


addLob(fileName, content [, mimeType] [, key])

Adiciona um documento no banco de dados.

Parameters:
Name Type Argument Description
fileName string

Nome do arquivo. A extensão do arquivo será utilizada para identificar o tipo do arquivo caso o parâmetro mimeType não seja informado.

content string

Conteúdo do documento que será gravado.

mimeType number | DBkey <optional>

Chave filha da classe "Mime Types" que determinará o tipo do documento armazenado. O tipo do arquivo será utilizado para determinar os algoritmos de compressão e codificação adequados.

key number <optional>

Possibilita informar a chave do lob a ser criado. Quando não for informado, será gerada uma nova chave.

Returns:

Chave que identifica o documento armazenado.

Type
number
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const fileName = 'myDoc.xml';
const myLobClass = -1898144063; // Large Objects
const file = new File(fileName);
const lobStorage = new LobStorage(myLobClass)
const key = lobStorage.addLob(fileName, file.read());
ds.setField('iLob', key);

beginBatch()

Após a chamada desse método, todas as modificações solicitadas aos métodos addLob e updateLob serão armazenadas num DataSet, até que seja chamado o método endBatch.

See:

deleteLob(key)

Apaga um documento do banco de dados previamente armazenado pelo método addLob().

Parameters:
Name Type Description
key number

Chave do documento gerado pelo método addLob().

Returns:

Retornará true se o documento existir e tenha sido apagado.

Type
boolean
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const fileName = 'myDoc.xml';
const myLobClass = -1898144063; // Large Objects
const file = new File(fileName);
const lobStorage = new LobStorage(myLobClass);
const key = lobStorage.addLob(fileName, file.read());
ds.setField('iLob', key);
// ....
const lobStorage = new LobStorage(myLobClass);
lobStorage.deleteLob(ds.dbkey('iLob'));

endBatch()

Retorna um dataset com as modificações realizadas pelos métodos addLob e updateLob. Após isso as modificações feitas passam a ser efetuadas diretamente no banco.

See:
Returns:

Dataset com os registros inseridos e atualizados.

Type
Dataset

getLob(key)

Lê um documento do banco de dados previamente armazenado pelo método addLob(). Irá gerar um erro caso a chave informada não exista no banco de dados.

Parameters:
Name Type Description
key number

Chave do documento gerado pelo método addLob().

Returns:

Instância da classe module:@nginstack/engine/lib/database/LargeObject contendo o nome, conteúdo e mimeType do lob.

Type
LargeObject
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const lobStorage = new LobStorage(-1898144063) // Large Objects
const lob = lobStorage.getLob(lobKey);
const file = new File(lob.name);
file.write(lob.content);
file.close();

tryGetLob(key)

Tenta ler um documento do banco de dados previamente armazenado pelo método addLob() e retorna null caso ele não exista.

Parameters:
Name Type Description
key number

Chave do documento gerado pelo método addLob().

Returns:

Instância da classe module:@nginstack/engine/lib/database/LargeObject contendo o nome, conteúdo e mimeType do lob ou null caso não exista um lob com a chave informada.

Type
LargeObject
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const lobStorage = new LobStorage(-1898144063); // Large Objects
const lob = lobStorage.tryGetLob(lobKey);
if (lob) {
  const file = new File(lob.name);
  file.write(lob.content);
} else {
  throw new Error('O arquivo foi excluído por um outro usuário.');
}

updateLob(key, content [, fileName] [, mimeType])

Atualiza um documento existente no banco de dados.

Parameters:
Name Type Argument Description
key number

Chave do lob. Esta chave é gerada pelo método addLob().

content string

Conteúdo do documento que será gravado.

fileName string <optional>

Nome do arquivo. Caso não seja informado, será mantido o nome atual. A extensão do arquivo será utilizada para identificar o tipo do arquivo caso o parâmetro mimeType não seja informado.

mimeType number | DBKey <optional>

Chave filha da classe "Mime Types" que determinará o tipo do documento armazenado. O tipo do arquivo será utilizado para determinar os algoritmos de compressão e codificação adequados.

Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage');
const fileName = 'myDoc.xml';
const myLobClass = -1898144063; // Large Objects
const file = new File(fileName);
const lobStorage = new LobStorage(myLobClass);
const key = lobStorage.addLob(fileName, file.read());
ds.setField('iLob', key);
// ....
const file = new File(fileName);
const lobStorage = new LobStorage(myLobClass);
lobStorage.updateLob(ds.ilob, file.read());