some
some()
Section titled “some()”Testa se pelo menos um elemento do array passa no teste implementado pela função fornecida. Retorna true se pelo menos um elemento satisfizer a condição, caso contrário retorna false.
Sintaxe
Section titled “Sintaxe”await db.some(key: string, callback: function): Promise<boolean>Parâmetros
Section titled “Parâmetros”key(obrigatório): Chave do array para testarcallback(obrigatório): Função de teste que recebe (element, index, array)
Retorno
Section titled “Retorno”true se pelo menos um elemento passar no teste, false caso contrário.
Exemplos
Section titled “Exemplos”Verificação de Status
Section titled “Verificação de Status”await db.set('users', [ { id: 1, name: 'João', age: 25, active: false }, { id: 2, name: 'Maria', age: 30, active: true }, { id: 3, name: 'Pedro', age: 35, active: false }]);
// Verificar se há pelo menos um usuário ativoconst hasActiveUser = await db.some('users', user => user.active);console.log(hasActiveUser); // true
// Verificar se há usuários menores de idadeconst hasMinor = await db.some('users', user => user.age < 18);console.log(hasMinor); // false
// Verificar se há usuários com mais de 30 anosconst hasOlderUser = await db.some('users', user => user.age > 30);console.log(hasOlderUser); // true (Pedro tem 35)Verificação de Estoque
Section titled “Verificação de Estoque”await db.set('products', [ { id: 1, name: 'Notebook', stock: 0, price: 2500 }, { id: 2, name: 'Mouse', stock: 5, price: 50 }, { id: 3, name: 'Keyboard', stock: 0, price: 120 }]);
// Verificar se há produtos em estoqueconst hasStock = await db.some('products', product => product.stock > 0);console.log(hasStock); // true (Mouse tem estoque)
// Verificar se há produtos caros (>R$ 1000)const hasExpensive = await db.some('products', product => product.price > 1000);console.log(hasExpensive); // true (Notebook custa R$ 2500)
// Verificar se há produtos com muito estoque (>10)const hasHighStock = await db.some('products', product => product.stock > 10);console.log(hasHighStock); // falseDetecção de Problemas
Section titled “Detecção de Problemas”await db.set('servers', [ { name: 'web-01', status: 'online', cpu: 45 }, { name: 'web-02', status: 'online', cpu: 78 }, { name: 'db-01', status: 'maintenance', cpu: 12 }]);
// Verificar se há servidores offlineconst hasOfflineServer = await db.some('servers', server => server.status === 'offline');console.log(hasOfflineServer); // false
// Verificar se há servidores com alta CPUconst hasHighCPU = await db.some('servers', server => server.cpu > 70);console.log(hasHighCPU); // true (web-02 tem 78%)
// Verificar se há servidores em manutençãoconst hasMaintenance = await db.some('servers', server => server.status === 'maintenance');console.log(hasMaintenance); // trueValidação de Dados
Section titled “Validação de Dados”await db.set('scores', [45, 67, 89, 92, 78]);
// Verificar se há notas acima de 90const hasExcellent = await db.some('scores', score => score > 90);console.log(hasExcellent); // true (92)
// Verificar se há reprovações (nota < 60)const hasFailure = await db.some('scores', score => score < 60);console.log(hasFailure); // true (45)
await db.set('emails', [ 'joao@empresa.com', 'maria@gmail.com', 'pedro@empresa.com']);
// Verificar se há emails corporativosconst hasCorporateEmail = await db.some('emails', email => email.includes('@empresa.com'));console.log(hasCorporateEmail); // trueCasos de Uso
Section titled “Casos de Uso”🚨 Sistema de Alertas
Section titled “🚨 Sistema de Alertas”// Verificar se há alertas críticosconst hasCriticalAlert = await db.some('alerts', alert => alert.level === 'critical');
if (hasCriticalAlert) { // Disparar notificação urgente}🔍 Verificação de Existência
Section titled “🔍 Verificação de Existência”// Verificar se email já está cadastradoconst emailExists = await db.some('users', user => user.email === 'novo@email.com');
if (emailExists) { throw new Error('Email já cadastrado');}🎯 Controle de Acesso
Section titled “🎯 Controle de Acesso”// Verificar se usuário tem alguma permissão administrativaconst isAdmin = await db.some('permissions', permission => permission.userId === userId && permission.type === 'admin');📊 Análise de Dados
Section titled “📊 Análise de Dados”// Verificar se há vendas no último mêsconst hasRecentSales = await db.some('sales', sale => sale.date > new Date(Date.now() - 30 * 24 * 60 * 60 * 1000));Características Importantes
Section titled “Características Importantes”⚡ Avaliação de Curto-Circuito
Section titled “⚡ Avaliação de Curto-Circuito”- Para na primeira condição verdadeira encontrada
- Não processa elementos desnecessários
- Otimizado para arrays grandes
🔄 Array Vazio
Section titled “🔄 Array Vazio”- Retorna
falsepara arrays vazios - Comportamento consistente com JavaScript nativo
🛡️ Validação Robusta
Section titled “🛡️ Validação Robusta”- Verifica tipos dos parâmetros
- Tratamento seguro de erros
- Não modifica o array original
Validação e Erros
Section titled “Validação e Erros”// ❌ Erro: Chave deve ser stringtry { await db.some(123, item => item.valid);} catch (error) { console.log(error.message); // "First argument (key) needs to be a string"}
// ❌ Erro: Callback deve ser funçãotry { await db.some('items', 'not a function');} catch (error) { console.log(error.message); // "Second argument (callback) needs to be a function"}
// ✅ Array vazio retorna falseawait db.set('empty', []);const result = await db.some('empty', item => true);console.log(result); // false
// ✅ Array não existe é tratado como vazioconst nonExistent = await db.some('nonexistent', item => true);console.log(nonExistent); // falseMétodos Relacionados
Section titled “Métodos Relacionados”every()- Verifica se todos os elementos satisfazem a condiçãofind()- Encontra primeiro elemento que satisfaz a condiçãofilter()- Filtra elementos que satisfazem a condiçãoincludes()- Verifica se array contém um valorindexOf()- Encontra índice de um elemento
Comparação com Every
Section titled “Comparação com Every”const data = [1, 2, 3, 4, 5];
// some() - pelo menos um elemento > 3const someGreater = await db.some('data', x => x > 3); // true (4 e 5)
// every() - todos os elementos > 3const allGreater = await db.every('data', x => x > 3); // false (1, 2 e 3 não são)
// Uso combinado para análisesconst hasHighScores = await db.some('scores', s => s > 90);const allPassed = await db.every('scores', s => s >= 60);
if (hasHighScores && allPassed) { console.log('Turma excelente: todos aprovados e alguns com notas máximas!');}Dicas de Performance
Section titled “Dicas de Performance”// ✅ Use some para verificações rápidasconst needsAttention = await db.some('systems', sys => sys.status !== 'ok');
// ✅ Combine com outras operações para análise completaconst analysis = { hasErrors: await db.some('logs', log => log.level === 'error'), hasWarnings: await db.some('logs', log => log.level === 'warning'), totalLogs: await db.count('logs')};
// ✅ Use para validação antes de operações custosasif (await db.some('queue', task => task.priority === 'high')) { // Processar fila de alta prioridade primeiro}