Javascript Google Firebase-重新格式化JSON输出

Javascript Google Firebase-重新格式化JSON输出,javascript,json,firebase,converters,Javascript,Json,Firebase,Converters,我使用Google Firebase生成JSON,数据如下: { "tasks": { "-LzH6kQjS_nY4P97EONB": { "createdBy": "Andrew", "date": "\"2020-01-23T11:17:24.213Z\"", "description": "Some task description.", "done": false

我使用Google Firebase生成JSON,数据如下:

{
    "tasks": {
        "-LzH6kQjS_nY4P97EONB": {
            "createdBy": "Andrew",
            "date": "\"2020-01-23T11:17:24.213Z\"",
            "description": "Some task description.",
            "done": false
        }
    }
}
我想将其转换为以下格式:

[
    {
        "id": "-LzH6kQjS_nY4P97EONB",
        "createdBy": "Andrew",
        "date": "\"2020-01-23T11:17:24.213Z\"",
        "description": "Some task description.",
        "done": false
    }
]

我想我可以处理转换部分(如果你们在这里没有看到一些不可能的东西),但我想不出“返回”转换后的JSON文件的方法,所以它总是在链接下可用。有没有一种方法可以不费吹灰之力、不危及Firebase安全?

以下是一些可能的解决方案:

  • tasks
    路径中添加任务时,创建一个将运行的。该函数应使用新添加的数据以不同的路径更新数组,如
    tasksaarray
    。您可以使用读取现有数组、添加新项和保存新数组。然后在Qlik的“.json”url中使用该路径

  • 制作一个将从数据库中读取
    任务
    ,并返回所需格式的数组作为响应

  • 修改客户机代码,以直接以所需格式写入数据


  • 对于解决方案1,随着时间的推移和数据的增长,事务的性能将开始下降,但可能不会明显下降。如果您的响应中不需要非常旧的数据,那么除了在数组中添加任务之外,还可以从数组中删除旧数据,以限制数组的大小


    使用解决方案2,您可以只包含过去几个月或几年的任务


    解决方案3要求客户端准确地知道已经有多少任务*,以便在适当的索引处添加新任务。您说过将有20个并发用户,因此存在多个客户端在同一路径上写入并发生覆盖的风险

    为了防止覆盖,可以使用数据库规则,如,并在客户端上处理错误(使用正确的索引重试)

    您还可以从客户机执行数据库事务,但随着阵列变大,添加任务的速度会变慢。云函数并不关心是否需要几秒钟来完成某件事情,但用户关心:)


    *要找到已经有多少任务,可以读取整个数组并计算元素。相反,您可以创建一个后台云函数,该函数将维护一个
    taskCount
    路径,即:任务数。然后客户端可以简单地读取该数字。

    “返回”转换后的JSON文件,因此它总是可以在链接“你这是什么意思?”?什么样的客户端需要这种格式?Qlik需要这种格式,否则它会将每个对象拆分为单独的表,并为它们提供后缀,如“createdBy_u1”、“createdBy_u2”。“在链接下”-现在我给Firebase.json文件提供链接,所以我可能需要给其他提供重新格式化json的链接,或者我在混合东西?哦,我明白了。有很多方法可以解决这个问题。在Firebase中添加数据的频率是多少?您使用哪个客户端添加数据?你有权使用它的代码吗?是否有许多人同时添加数据?您多久读取一次结果格式?将会有多少元素?(比如说……超过100条?)您目前正在提供什么.json链接?如果要提供指向数据库根目录的链接,可以通过向“任务”路径提供.json链接来解决问题。@stratuba因为它不是根目录。我文章中的代码示例来自“任务”路径JSON这是Qlik mashup,我使用JavaScript保存数据(这就是为什么我决定使用Firebase,因为我没有访问PHP等的权限),-是的,我有访问该代码的权限。-大约20人同时添加-每月两次-元素是什么意思?多棒的列表,非常感谢!我将从#3开始,正如我在原始帖子中提到的。非常感谢。