首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase RT数据库子数据库未从httpPostJson更新

Firebase RT数据库子数据库未从httpPostJson更新
EN

Stack Overflow用户
提问于 2017-11-13 12:16:59
回答 2查看 46关注 0票数 1

我正在尝试将Smartthings设备发生的事件记录到Firebase数据库中。我的Smartthings应用程序的功能是:

代码语言:javascript
复制
def reportSwitchOnHandler(evt){
log.debug "reportSwitchOnHandler called: $evt"

def params = [
    uri: "https://<project-id>.firebaseio.com/switchStateData/params.json?auth=<key>",

    body: [
            switchState: "test"
        ]
]

try {
    httpPostJson(params) { resp ->
        resp.headers.each {
            log.debug "${it.name} : ${it.value}"
        }
        log.debug "DEBUG (POST FIREBASE): response contentType: ${resp.    contentType}"
    }
} catch (e) {
    log.debug "something went wrong: $e"
}

我返回的"params“数据库结构是json:

代码语言:javascript
复制
{"lights":0,"switchState":"off"}

我只想更新switchState。

如上所述,当我在"params“结构下运行上面的代码时,它不是更新测试子对象,而是创建一个具有类似"-Kyn_TIEItKNNACLuEk5”这样的随机值的新子对象,而在该switchState下面是具有“switchState”值的子对象。

代码语言:javascript
复制
{"-Kyn_TIEItKNNACLuEk5":{"switchState":"test"},"lights":0,"state":"off"}

要让它真正更新原始的switchState子级而不是创建新的子子级(-Kyn_TIEItKNNACLuEk5),你知道我缺少什么吗?

EN

回答 2

Stack Overflow用户

发布于 2017-11-13 12:26:02

使用POST将数据推送到某个位置,您需要使用PATCH更新数据,而不会覆盖丢失的键。

代码语言:javascript
复制
curl -X PATCH -d '{"last":"Jones"}' \
'https://[PROJECT_ID].firebaseio.com/users/jack/name/.json'

您可以使用修补程序请求在不覆盖现有数据的情况下更新某个位置的特定子项。使用补丁写入的数据中已命名的子项被覆盖,但忽略的子项不会被删除。

https://firebase.google.com/docs/reference/rest/database/#section-patch

票数 1
EN

Stack Overflow用户

发布于 2017-11-13 21:28:38

为了将来参考,我在Smartthings文档中发现了一个测试版功能(在撰写本文时),它现在允许使用PATCH命令。看看这里,http://docs.smartthings.com/en/latest/smartapp-developers-guide/async-http.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47256982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档