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

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

Members


batchChanges_ :Dataset

Dataset no qual serão armazenadas as alterações de inserção e atualização nos arquivos da classe Large Objects.

Type:
  • Dataset

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 <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. que quando não será informado gerado automaticamente

Returns:

Chave que identifica o documento armazenado.

Type
number
Example
var LobStorage = require('@nginstack/engine/lib/database/LobStorage');
var fileName = "myDoc.xml"
var myLobClass = -1898144063 // Large Objects
var file = new File( fileName )
var lobStorage = new LobStorage( myLobClass )
var key = lobStorage.addLob( fileName, file.read() )
ds.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:
  • LobStorage#endBatch

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
var LobStorage = require('@nginstack/engine/lib/database/LobStorage');
var fileName = "myDoc.xml";
var myLobClass = -1898144063; // Large Objects
var file = new File(fileName);
var lobStorage = new LobStorage(myLobClass);
var key = lobStorage.addLob(fileName, file.read());
ds.ilob = key;
// ....
var lobStorage = new LobStorage(myLobClass);
lobStorage.deleteLob(ds.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:
  • LobStorage#beginBatch
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
var LobStorage = require('@nginstack/engine/lib/database/LobStorage');
var lobStorage = new LobStorage( -1898144063 ) // Large Objects
var lob = lobStorage.getLob(lobKey);
var 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
var LobStorage = require('@nginstack/engine/lib/database/LobStorage');
var lobStorage = new LobStorage( -1898144063 ) // Large Objects
var lob = lobStorage.tryGetLob( lobKey )
if ( lob ){
  var 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 <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
var LobStorage = require('@nginstack/engine/lib/database/LobStorage');
var fileName = "myDoc.xml";
var myLobClass = -1898144063; // Large Objects
var file = new File(fileName);
var lobStorage = new LobStorage(myLobClass);
var key = lobStorage.addLob(fileName, file.read());
ds.ilob = key;
// ....
var file = new File(fileName);
var lobStorage = new LobStorage(myLobClass);
lobStorage.updateLob(ds.ilob, file.read());