簡體   English   中英

JSON_MERGE_PATCH 與 null 值(在 Javascript 中)

[英]JSON_MERGE_PATCH with null values (in Javascript)

如文檔中所述,JSON_MERGE_PATCH 將刪除設置為 null的每個值,以下示例將從我的設置 json 字段中刪除 header 值

const data = JSON.stringify({header: null, otherdata: ...})
await connection.query(UPDATE shops SET JSON_MERGE_PATCH(settings, ?), data)

但是,如果我想將值設置為 null,如果我將header: 'null'用引號括起來,您可以猜到:它會將 'null' 作為字符串輸入到我的數據庫中。

有誰知道是否有可能讓 mysql 用 null 值更新我的 json 字段?

JSON_MERGE_PATCH 文檔

第二個 object 的所有成員,在第一個object 中沒有對應的鍵,並且其值不是 JSON Z37BZA6259CC0489DFF20 字面量。

所以你看到的行為是預期的。 可能適合您的用例的可能解決方案如下:

UPDATE shops SET JSON_MERGE_PATCH('{header: null, other defaults...}', settings, ?)

這利用了該規則不適用於第一個object 的事實。 這樣,第一個參數指定應該始終在 json 文檔中的鍵(默認值)。 但是有一個副作用: settings中的鍵是 null 並且未在提供的默認值中指定將被刪除(除非它們在?內)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM