Class: LobRecordIterator

@nginstack/engine/lib/database/LobRecordIterator~ LobRecordIterator


new LobRecordIterator(ds)

Classe que permite iterar pelos registros da tabela iLob, permitindo a leitura do conteúdo dos arquivos e seus metadados.

Esta classe deve ser utilizada quando é necessária a leitura de uma grande quantidade de objetos da LobStorage ou quando a seleção dos conteúdos a serem lidos é complexa e depende de critérios que envolvem outras tabelas do sistema.

Parameters:
Name Type Description
ds DataSet

DataSet contendo os registros da tabela iLob a serem iterados. O DataSet informado deve conter todos os campos da tabela iLob.

Example
const LobRecordIterator = require('@nginstack/engine/lib/database/LobRecordIterator.js');
const File = require('@nginstack/engine/lib/io/File.js');

// Query jpeg user profiler images with size greater than 10KB
const ds = database.query(
  'SELECT * FROM iLob l ' +
  'WHERE l.iMimeType = -1898187688 ' + // image/jpg
  '  AND l.iSize > 10240 ' +
  '  AND l.iKey IN (SELECT iLob FROM iDataRel WHERE iClass = -1898141861)' // Imagens de perfil de usuário
 );

const outputDir = 'lob-iterator-test';
const lobIterator = new LobRecordIterator(ds);
let next = lobIterator.next();
while (!next.done){
  const lob = next.value;
  File.fileFromString(File.pathAppend(outputDir, lob.name), lob.content);
  next = lobIterator.next();
}

Methods


next()

Método responsável por percorrer os registros. Quando chamado pela primeira vez esse método posiciona o cursor no primeiro registro.

O objeto retornado possui as seguintes propriedades:

  • "done": indica se ainda existem registros a serem percorridos.
  • "value": instância de LargeObject associada ao registro corrente. Por meio dela é possível ler o conteúdo do arquivo, bem como seus metadados. Será undefined caso não haja mais registros a serem lidos.
Returns:

Objeto que indica se a iteração terminou e o LargeObject associado ao registro corrente.

Type
Object