• Passa alla navigazione primaria
  • Passa al contenuto principale
  • Passa alla barra laterale primaria
  • Passa al piè di pagina
Glue Labs

Glue Labs

Trasformiamo le tue idee in prodotti digitali di successo!

  • HOME
  • SOLUZIONI
  • NEWS
  • PRODOTTI
  • CONTATTI
  • CASE STUDY

Query OR in Firebase Cloud Firestore con RxJS

Come implementare l'operatore logico OR in Firestore

Cloud Firestore è una delle ultime caratteristiche di Firebase che vi permette di archiviare facilmente dati per le vostre applicazioni e di effettuare query per il loro recupero ma, quasi in maniera incredibile e come si può verificare dalla documentazione, è possibile effettuare query con l’operatore logico AND ma non con l’operatore logico OR.

Creare l’operatore OR in Firestore con RxJS

Grazie a RxJS possiamo ricreare l’operatore OR ed, in particolare, usando l’operatore RxJS combineLatest che permette combinare diversi stream di Observable in un unico stream che può essere quindi associato alla UI. L’operatore combineLatest invia valori a prescindere dal fatto che l’ Observable abbia o meno ricevuto nuovi dati e ciò è proprio quello di cui abbiamo bisogno. Pertanto, nell’esempio:

Creiamo gli Observable da Firestore

// Query per il Piemonte
var piemonteRef = citiesRef.where("regione", "==", "piemonte");
// Query per la Lombardia
var lombardiaRef = citiesRef.where("regione", "==", "lombardia");
// Observable.
var piemonte$ = new Rx.Subject();
var lombardia$ = new Rx.Subject();
// Inserisci i dati
piemonteRef.onSnapshot((querySnapshot) => {
var data = querySnapshot.docs.map(d => d.data());
piemonte$.next(data);
});
lombardiaRef.onSnapshot((querySnapshot) => {
var data = querySnapshot.docs.map(d => d.data());
lombardia$.next(data);
});

Combiniamo gli stream di Observable

// Combinazione OR
var piemonteOrlombardia$ = Rx.Observable.combineLatest(piemonte$,lombardia$).switchMap((cities) => {
// Destrutturiamo i valori
var [piemonteCities, lombardiaCities] = cities;
var combined = [
...piemonteCities,
...lombardiaCities
]
// Ritorniamo un nuovo Observable
return Rx.Observable.of(combined);
})

Registriamoci al nuovo stream

// Registriamoci
piemonteOrlombardia$.subscribe((result) => {
// Inviamo alla UI
var citiesEle = document.getElementById('cities');
result.forEach(city => {
var itemEle = document.createElement("li");
itemEle.textContent = city.name;
citiesEle.appendChild(itemEle);
});

Glue Labs, Firestore e Firebase

Esperti di soluzioni Cloud Based, ti supportiamo con assistenza e consulenza professionale, attraverso formazione avanzata  e ti forniamo il servizio di Hosting Google Cloud per ospitare tutti i tuoi sistemi con 2 ore di consulenza gratuita al mese. Contattaci subito per un preventivo gratuito e senza impegno.

Continua la lettura

  1. SQL vs NoSQL, Atomic, Transaction…Quale database scegliere per cosa
  2. Come individuare le slow query: Sqlcommenter
  3. I vantaggi delle CSS Container Query

Categoria: Articoli Tags: Cloud Firestore, firebase, gcp, Hosting GCP, Observable, RxJS

Barra laterale primaria

Cosa facciamo

  • Content Strategy
  • E-Commerce
  • Formazione avanzata Web, Mobile & Cloud
  • IoT – Sviluppo e Integrazione
  • Micro Live Learning(MLL) Web, Mobile & Cloud
  • Project Management Prince2
  • PushAPE
  • Sicurezza ICT
  • Software Aziendali
  • Sviluppo Mobile App
  • Sviluppo, Supporto, Assistenza Tecnica e Hosting Google Cloud
  • System Integration
  • Web Application
  • Web Design

Contatti

Scrivici dal form di contatto

Tel +39 06 56549766
Fax +39 06 21122581
Mail: info@glue-labs.com
Pec: gluelabs@legalmail.it

Dove siamo

Roma: Piazza Don Sturzo 15
Milano: Via Lazzaretto 19
Torino: Via San Domenico 28
Altamura: Via Maggio 1648 24

"*" indica i campi obbligatori

Nome*
Questo sito è protetto da reCAPTCHA e si applicano le Normative sulla Privacy e i Termini di Servizio di Google.
Inviando i tuoi dati accetti le condizioni sulla Privacy. Li useremo per rispondere alle tue domande e richieste.
Consenso*
Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.

Siamo parte di

La nostra Agenzia di Marketing

Footer

Partnership



Rimaniamo in contatto

Iscriviti alla nostra newsletter

Nome
Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.

Soluzioni

  • Corso Intelligenza Artificiale per lo sviluppo di software
  • Piani Enterprise di Consulenza Tecnica in ambito Web, Mobile e Cloud
  • Corso Rust Base e Avanzato
  • Integrazione di Passkey di Google nelle Web e Mobile Application
  • Consulenza, assistenza e supporto di Cloud Engineer
  • Sportello virtuale con il sistema Jitsi
  • Time & Material – Web Designer
  • Corso Angular 16
  • Time & Material personale IT
  • Assistenza, Supporto e Sviluppo NestJS e Node.js

Articoli

  • I 6 vantaggi della Unified Communication as a Service(UCaaS)
  • Da Cloud Hosted a Cloud Native Application: le funzionalità da aggiungere
  • Gadget NFC: come gestire il cliente(App e Pagamenti) con braccialetti e ciondoli
  • Come gestire Java Full-Stack Application: Hilla
  • Una possibile architettura software per implementare “by Default” il GDPR nelle applicazioni
  • Come ridurre la latenza del 60%: l’esperienza di Linkedin
  • Cosa sono ed a cosa servono Technology Radar, Standard Tecnologici interni ed Architectural Decision Record(ADR)
  • KEDA: un AutoScaler Event-Driven per Kubernetes
  • Le novità di NestJS 10
  • Cos’è e come funziona la nuova metrica Interaction to Next Paint(INP) delle Core Web Vitals

Le nostre sedi

  • Roma, Piazza Don Sturzo 15
  • Milano, Via Lazzaretto 19
  • Torino, Via San Domenico 28
  • Altamura, Via Maggio 1648 24

Contatti

  • Tel. +39 06 87811067
  • Fax +39 06 99335373
  • glue-labs@legalmail.it
  • info@glue-labs.com
  • Facebook
  • LinkedIn
  • Twitter

Scarica app da App StoreScarica app da Play Store


Glue Labs © 2011–2023 | Copyright | Privacy Policy | Codice Etico | Company Info | Cookie Policy

Gestisci Consenso Cookie
Usiamo cookie per ottimizzare il nostro sito web ed i nostri servizi.
Funzionale Sempre attivo
La conservazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire la fruizione di uno specifico servizio esplicitamente richiesto dall'abbonato o dall'utente, o al solo fine di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente a fini statistici anonimi. Senza un mandato di comparizione, il rispetto volontario da parte del tuo provider di servizi Internet o registrazioni aggiuntive da parte di terzi, le informazioni archiviate o recuperate solo per questo scopo non possono essere generalmente utilizzate per identificarti. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
L'archiviazione tecnica o l'accesso è necessario per creare profili utente per inviare pubblicità o per tracciare l'utente su un sito Web o su più siti Web per scopi di marketing simili.
Gestisci opzioni Gestisci servizi Gestisci {vendor_count} fornitori Per saperne di più su questi scopi
Gestisci preferenze
{title} {title} {title}