简体   繁体   中英

Firebase check if an array of values exist before posting in DB

I'm currently building an app using vue.js and firebase as backend and I'm checking whether a value already exists in the database by doing so:

addItem ({commit}, payload) {
      const footprint = payload.footprint

      firebase.database().ref('ecologic/footprint').once('value', snapshot => {
        
        const obj = snapshot.val()
        let objExists
       
        for (let key in obj) {
          if (obj[key] === footprint) objExists = true
          else objExists = false
        }

        if (!objExists) {
          firebase.database().ref(`ecologic/footprint`).push(footprint)
        }
      })

    },

How can I extend this functionality to compare an array's value with another array and post to firebase if the value doesn't exists yet.

I tried to use double loop but was not working since I'm using a boolean. Is there a nicer way to do it? Thank you

I tried another way but this time console.log is always returning true

firebase.database().ref('ecologic/footprint').once('value', snapshot => {
        
        const objSnap = snapshot.val()
        const loadedFootp = []

        
        for (let key in objSnap) {
          loadedFootp.push(objSnap[key])
        }

       
        
        for (let obj in footprint) {
          const newFootp = footprint[obj]
          const objExists = footprint.some((newFootp) => loadedFootp.indexOf(newFootp) !== -1);
          console.log(objExists)
        }
        
      
        
      })

I'm currently building an app using vue.js and firebase as backend and I'm checking whether a value already exists in the database by doing so:

addItem ({commit}, payload) {
      const footprint = payload.footprint

      firebase.database().ref('ecologic/footprint').once('value', snapshot => {
        
        const obj = snapshot.val()
        let objExists
       
        for (let key in obj) {
          if (obj[key] === footprint) objExists = true
          else objExists = false
        }

        if (!objExists) {
          firebase.database().ref(`ecologic/footprint`).push(footprint)
        }
      })

    },

How can I extend this functionality to compare an array's value with another array and post to firebase if the value doesn't exists yet.

I tried to use double loop but was not working since I'm using a boolean. Is there a nicer way to do it? Thank you

I tried another way but this time console.log is always returning true

firebase.database().ref('ecologic/footprint').once('value', snapshot => {
        
        const objSnap = snapshot.val()
        const loadedFootp = []

        
        for (let key in objSnap) {
          loadedFootp.push(objSnap[key])
        }

       
        
        for (let obj in footprint) {
          const newFootp = footprint[obj]
          const objExists = footprint.some((newFootp) => loadedFootp.indexOf(newFootp) !== -1);
          console.log(objExists)
        }
        
      
        
      })

Found a way by doing so:

firebase.database().ref('ecologic/footprint').once('value', snapshot => {
    
    const objSnap = snapshot.val()
    const loadedFootp = []

    
    for (let key in objSnap) {
      loadedFootp.push(objSnap[key])
    }

   
    
    for (let obj in footprint) {
     

      if (loadedFootp.some(item => item === footprint[obj])) {
      
      } else {
      console.log(footprint[obj])
      }

    }
      
  })

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM