[英]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 字段?
第二個 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.