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
-
logChanges
-
Indica se as alterações realizadas por esta classe irão gerar registros de log transactional na tabela iLog.
Atenção: a desativação do log transacional não permite o desfazimento das alterações realizadas e prejudica a auditoria do sistema em inspeções de segurança. Modificações sem geração de log também não são aplicadas nas bases de dados destino dos processos de replicação de dados. Essas modificações também podem ser perdidas em cenários de migração de banco de dados onde uma base de dados é sincronizada a partir do log transacional. Por esses motivos, esta propriedade deve ser utilizada apenas em situações específicas, onde os lobs gerados são temporários e serão descartados após um curto tempo de vida.
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
,updateLob
esetLobExtraAttributes
serão armazenadas em DataSet que será retornado pelo métodoendBatch
.Não é possível remover lobs dentro de uma operação batch.
- 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
,updateLob
esetLobExtraAttributes
durante a operaçãobatch
.O método
endBatch
não efetiva as alterações na base de dados, sendo responsabilidade de quem chama este método a gravação dessas alterações.- 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());