Objection.js對relational數據以及JSONB數據有很好的支持。
你不必做任何技巧來解析/串化json數據。這一切都是自動完成的。您可以聲明模式以允許驗證您要放入數據庫的數據等。
可以將嵌套關係對象層次結構插入到數據庫中,並且將生成行以更正表格,並且您有javascript API來查詢JSON列中的數據,需要爲此編寫RAW SQL。
編輯:
不知道爲什麼向下選票這裏(其-2目前),Objection.js
仍然有着節點世界PostgreSQL的JSONB操作(最好的支持,並在目前的答案是唯一的選擇,它有什麼特別的支持postgresql jsonb處理)。
最新增加的功能是支持僅修補JSONB列中的部分數據,其中objection.js自動爲您構造jsonb_set()
調用。
例如:
ModelWithJsonColumn.query().update({
'jsonColumn:attribute' : 'new value',
otherColum: ref('jsonColumn:extractThisAttribute')
}).where('id', 1).returning('*')
會創建這樣的更新查詢:
update "ModelWithJsonColumn" set
"jsonColumn" = jsonb_set("jsonColumn", '{attribute}', to_jsonb('new value'), true),
"otherColumn" = "jsonColumn"#>'{extractThisAttribute}'
where "id" = 1 returning *
也可以使用ref()
語法,幾乎每一個查詢構建器方法就像
.select(['id', ref('jsonArrayColumn:[0]')])
或
.where('name', ref('jsonColumn:middleName'))
或者甚至加入
.join('PetTable',
ref('PetTable.jsonColumn:details.name'),
'=',
ref('ThisTable.someOtherJsonbColumn:dogName'))
我使用sequelize,只是將JSON加入並解析它出來。我喜歡這個設置。更何況,當我用芒果和貓鼬時。 – MikeSmithDev
使用sequelize,您將無法查詢在jsonb列中包含某些數據的行,也無法在jsonb列中修補某個字段。 –