javascript – 更新嵌套对象firebase

从Firebase说明:

给定像alanisawesome这样的单个关键路径,updateChildren()仅更新第一个子级别的数据,并且超出第一个子级别传递的任何数据都被视为setValue()操作.多路径行为允许使用更长的路径(如alanisawesome / nickname)而不覆盖数据.这就是第一个例子与第二个例子不同的原因.

我试图在我的代码中使用单个函数createOrUpdateData(object).在更新的情况下,它会正确更新第一级子级,但如果我传递了嵌套对象,则会删除该嵌套对象的所有其他属性.

这是代码

function saveUserDetails(email,object){
        var hashedEmail = Utilities.getHashCode(email);
        var userRef = ref.child(hashedEmail);
        return $q(function(resolve,reject){
            return userRef.update(object,function(error){
                if(error){
                    reject(error);
                }else{
                    resolve("Updated successfully!");
                }
            });
        });
    }

所以,如果我通过:

{
   name: 'Rohan Dalvi',externalLinks: { 
      website: 'mywebsite'
   }
}

然后它将删除externalLinks对象中的其他属性.是否有更简洁的方法来避免这种情况?

简而言之,如何确保仅更新嵌套对象并且不删除数据.

解决方法

您可以使用多路径更新.
var userRef = ref.child(hashedEmail);
var updateObject = {
   name: 'Rohan Dalvi',"externalLinks/website": 'mywebsite'
};
userRef.update(updateObject);

通过在对象文字中使用“externalLinks / website”语法,它将嵌套路径视为更新,而不是嵌套对象的集合.这样可以防止嵌套数据被删除.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...