根据if条件更新Firebase中的对象

时间:2017-12-04 11:18:22

标签: javascript firebase firebase-realtime-database

我正在尝试仅在其中一个属性不存在时更新Firebase中的对象。

到目前为止的逻辑是:你循环定义旅行的照片,如果在这张照片中你找不到属性“location”,你可以通过插入属性“location”来更新对象(它本身就是一个具有“coord”,“locationname”,“regioncode”,“thumbnailurl”属性的对象。

问题是我加载页面后,没有为没有属性“location”的照片插入对象“location”。

我的数据库结构:

enter image description here

我的JS:

db.ref('photos/' + owneruid + '/trips/' + tripuid).once('value').then(snap => {
    var photos = snap.val()
    for (var key in photos) {
        console.log('Photo ID is ' + key)
        var thisPhoto = photos[key]
        this.photos.push(thisPhoto)
        var hasLocation = 'location';
        if(photos[key].hasOwnProperty(hasLocation)){
            console.log("location exists")
        }
        else{
            console.log("NO LOCATION")
            var location = {coord:"", locationname:"", regioncode:"", thumbnailurl:""}
            function writeLocation(location) {
                db.ref('photos/' + owneruid + '/trips/' + tripuid + thisPhoto).update(location)
             }
             this.photos.push(thisPhoto)
             }
        }
        this.photosDataIsReady = true
})

正如我们在控制台中看到的那样,循环中的if条件有效:

enter image description here

1 个答案:

答案 0 :(得分:0)

试试此代码



db.ref('photos/' + owneruid + '/trips/' + tripuid).once('value').then(snap => {
    var photos = snap.val()
    for (var key in photos) {
        console.log('Photo ID is ' + key)
        var thisPhoto = photos[key]
        this.photos.push(thisPhoto)
        var hasLocation = 'location';
        if(photos[key].hasOwnProperty(hasLocation)){
            console.log("location exists")
        }
        else{
            console.log("NO LOCATION")
            var location = {coord:"", locationname:"", regioncode:"", thumbnailurl:""}
                db.ref('photos/' + owneruid + '/trips/' + tripuid + thisPhoto).update(location);
             this.photos.push(thisPhoto)
             }
        }
        this.photosDataIsReady = true
})