小编Jes*_* We的帖子

使用单个更新命令更新或创建嵌套的jsonb值

让我们说我[在Postgres 9.6中 ]有一个名为的JSONB列xyz.在更新中,我想.foo.bar将此列的键设置为{"done":true}.

但是更新必须容忍更新前的值xyz是来自{}

{ 
    "abc": "Hello"
}
Run Code Online (Sandbox Code Playgroud)

或者可能

{ 
    "foo": {
        "baz": { "done": false }
    },
    "abc": "Hello"
}
Run Code Online (Sandbox Code Playgroud)

所以我不能jsonb_set马上使用,因为如果xyz->foo未定义则失败.在这种情况下,我可以使用jsonb_insert,但如果失败xyz->foo 已定义.

所以我尝试使用连接,例如

jsonb_set( 
    jsonb_set(xyz, '{foo}', '{}'::jsonb || xyz->'foo', true),
    '{foo, bar}', '{"done":true}', true
)
Run Code Online (Sandbox Code Playgroud)

...当foo未定义时也失败,因为它在串联中xyz->'foo'null覆盖{}.

显然我可以编写一个使用a if来解决这个问题的函数,但我真的觉得我应该能够在一次更新中完成它.

sql postgresql json

5
推荐指数
2
解决办法
5394
查看次数

在本地主机上运行时,Google Optimize不触发

我正在按照以下说明尝试通过JavaScript获取Google Optimize实验数据。但是我没有回调,也看不到调试器中发生的任何事情。

链接的说明使用了配置Google Analytics(分析)的gtag方式,因此我已根据https://developers.google.com/gtagjs/devguide/snippet设置了gtag ,并根据https://support.google.com/配置了Optimize 使用方法1 优化/ answer / 7513085?hl = zh-CN :使用全局站点标签(gtag.js)安装优化

我想显示我正在使用的确切代码,但是由于我是在React与Next.js服务器端渲染中进行的,因此与纯HTML + JS相比,原始代码有一些额外的东西。来源看起来像这样:

require("dotenv").config()
import React from "react"
import Document, { Head, Main, NextScript } from "next/document"

export default class extends Document {
    render() {
        return (
            <html>
                <Head>
                    <script async src={`https://www.googletagmanager.com/gtag/js?id=${process.env.GA_TRACKING_ID}`}/>
                    <script
                        dangerouslySetInnerHTML={{
                            __html: `
                                window.dataLayer = window.dataLayer || [];
                                function gtag(){ dataLayer.push(arguments); }
                                gtag('js', new Date());
                                gtag('config', '${process.env.GA_TRACKING_ID}', { optimize_id: '${process.env.OPTIMIZE_ID}'});
                                console.log('GA setup done: ${process.env.GA_TRACKING_ID} + ${process.env.OPTIMIZE_ID}'); …
Run Code Online (Sandbox Code Playgroud)

google-analytics next.js google-optimize

3
推荐指数
1
解决办法
581
查看次数