我目前正在构建一个使用vue.js和firebase作为后端的应用程序,并通过这样做来检查数据库中是否已经存在一个值:
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)
}
})
},如何扩展此功能以将数组的值与另一个数组进行比较,并在值尚不存在的情况下post到firebase。
我尝试使用双循环,但由于我使用的是布尔值,所以不起作用。有没有更好的方法呢?谢谢
我尝试了另一种方法,但这次console.log总是返回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)
}
})发布于 2020-09-21 03:22:36
通过这样做找到了一种方法:
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])
}
}
})发布于 2020-09-21 00:40:12
firebase.database().ref('ecologic/footprint').once('value', snapshot => {
const objSnap = snapshot.val()
let objExists
for (let obj in footprint) {
for (let key in obj) {
if (objSnap[key] === footprint[obj]) objExists = true
else objExists = false
}
if (!objExists) {
//firebase.database().ref(`ecologic/footprint`).push(footprint[obj])
console.log(JSON.stringify(obj))
}
}
})console.log:
[Log] Processing
[Log] Nature我真的不明白这对你指出问题有什么帮助。谢谢
https://stackoverflow.com/questions/63979200
复制相似问题