javascript - 更新嵌套对象 firebase

标签 javascript angularjs 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" 语法,它将嵌套路径视为更新而不是嵌套对象的集合。 这可以防止嵌套数据被删除。

关于javascript - 更新嵌套对象 firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33784702/

相关文章:

javascript - 与 Videogular 指令交互——如何操作?

ios - Swift 3 - 尝试从 FirebaseSnapshot 检索数据时的 SIGABRT

javascript - 为什么 jQuery 在本地导入时不起作用

javascript - 带有 ngHide 的 ngAnimate 无法添加 'ng-hide-animate' Hook 类

javascript - Angular 1.3 $parser 验证方法未通过测试

android - Firebase C++ 消息在启动时崩溃

node.js - Firebase NodeJs 引用错误 : Promise is not defined

javascript - 如何使用 Google 打包应用程序或扩展程序显示托盘图标

javascript - 增强 Function.prototype 并使方法可供所有函数使用?

javascript - 在数据表的渲染列中使用 ng-click