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 "/Dados/Sistema/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 [, options])
-
Adiciona um documento no banco de dados.
Para fins de compatibilidade, este método também aceita a seguinte assinatura:
addLob(fileName, content, mimeType?, key?);
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.
options
Object <optional>
Opções de inserção do documento.
Properties
Name Type Argument Description 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.
extraAttributes
Object <optional>
Objeto que contém a lista dos atributos e valores a serem configurados.
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();
-
getLobExtraAttributes(key)
-
Obtém os atributos extras de um documento do banco de dados.
Parameters:
Name Type Description key
number Chave do documento gerado pelo método addLob().
Returns:
objeto com o atributos extras armazenados como propriedades.
- Type
- Object
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage'); const myLobClass = -1898144063; // Large Objects const lobStorage = new LobStorage(myLobClass); const attr = lobStorage.getLobExtraAttributes(123456); attr.origem; // SONY DSC 40
-
setLobExtraAttributes(key, extraAttributes)
-
Preenche os atributos extras em um documento do banco de dados.
Parameters:
Name Type Description key
number Chave do documento gerado pelo método addLob().
extraAttributes
Object Objeto que contém a lista dos atributos e valores a serem configurados.
Example
const LobStorage = require('@nginstack/engine/lib/database/LobStorage'); const myLobClass = -1898144063; // Large Objects const lobStorage = new LobStorage(myLobClass); lobStorage.setLobExtraAttributes(123456, {origem: "SONY DSC 40", autor: "User Name"});
-
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 [, options])
-
Atualiza um documento existente no banco de dados.
Para fins de compatibilidade, este método também aceita a seguinte assinatura:
updateLob(key, content, fileName?, mimeType?);
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.
options
Object <optional>
Opções de atualização do documento.
Properties
Name Type Argument Description 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.
extraAttributes
Object <optional>
Objeto que contém a lista dos atributos e valores a serem configurados.
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());