new LobStorage(classKey)
Classe que possibilita armazenar 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 de serem gravados, reduzindo o espaço necessário para armazenagem.
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 :boolean
-
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.
Type:
- boolean
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 fileNamestring 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.
contentstring | Uint8Array | ArrayBuffer Conteúdo do documento que será gravado.
optionsObject <optional>
Opções de inserção do documento.
Properties
Name Type Argument Description mimeTypenumber | DBKey <optional>
Chave filha da classe "/Dados/Sistema/Tabelas auxiliares/ Tipos de arquivos" que determinará o tipo do documento armazenado. O tipo do arquivo será utilizado para determinar os algoritmos de compressão e codificação adequados.
keynumber <optional>
Possibilita informar a chave do lob a ser criado. Quando não for informado, será gerada uma nova chave.
extraAttributesObject <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,updateLobesetLobExtraAttributesserão armazenadas em DataSet que será retornado pelo métodoendBatch.- Deprecated:
-
- Yes
- See:
-
commitTransaction()
-
Efetiva a gravação das alterações realizadas pelos métodos
addLob,updateLobedeleteLob.Returns:
Número da versão gerada pela gravação das alterações.
- Type
- number
-
deleteLob(key)
-
Apaga um documento da Lob Storage previamente armazenado pelo método addLob().
Parameters:
Name Type Description keynumber 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,updateLobesetLobExtraAttributesdurante a operaçãobatch.O método
endBatchnão efetiva as alterações na base de dados, sendo responsabilidade de quem chama este método a gravação dessas alterações. Como a gravação não é controlada por essa classe, as operações pendentes de aplicação no storage são todas efetivadas antes de retornarmos o dataset. Se por qualquer motivo a gravação não for realizada, o métodorollbackBatchdeve ser chamado para excluir os registros enviados para o storage. Se isso não for feito os arquivos enviados para o storage ficarão órfãos.- Deprecated:
-
- Yes
- 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 keynumber 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 keynumber 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 -
rollbackBatch()
-
Ao utilizar a LobStorage no modo "batch", a gravação do DataSet dos arquivos é feita por quem utiliza a classe. Dessa forma, se por algum motivo a gravação não puder ser feita, este método deve ser chamado para reverter a gravação dos arquivos no serviço de armazenamento.
- Deprecated:
-
- Yes
-
rollbackTransaction()
-
Utilizado para desfazer as alterações no serviço de armazenamento realizadas na última transação iniciada pelo método
startTransaction. -
setLobExtraAttributes(key, extraAttributes)
-
Preenche os atributos extras em um documento do banco de dados.
Parameters:
Name Type Description keynumber Chave do documento gerado pelo método addLob().
extraAttributesObject 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"}); -
startTransaction()
-
Após a chamada desse método, todas as modificações solicitadas aos métodos
addLob,updateLobesetLobExtraAttributesserão armazenadas internamente e serão gravados no banco de dados apenas na chamada ao métodocommitTransaction. -
tryGetLob(key)
-
Tenta ler um documento da Lob Storage previamente armazenado pelo método addLob() e retorna null caso ele não exista.
Parameters:
Name Type Description keynumber 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 keynumber Chave do lob. Esta chave é gerada pelo método addLob().
contentstring | Uint8Array | ArrayBuffer Conteúdo do documento que será gravado.
optionsObject <optional>
Opções de atualização do documento.
Properties
Name Type Argument Description fileNamestring <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.
mimeTypenumber | DBKey <optional>
Chave filha da classe "/Dados/Sistema/Tabelas auxiliares/ Tipos de arquivos" que determinará o tipo do documento armazenado. O tipo do arquivo será utilizado para determinar os algoritmos de compressão e codificação adequados.
extraAttributesObject <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());