让我们说我[在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来解决这个问题的函数,但我真的觉得我应该能够在一次更新中完成它.
我正在按照以下说明尝试通过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)