And*_*zia 17 postgresql json node.js
我在这里面临一些分析瘫痪.使用NodeJS编程数据库有很多选择,我有点迷失.
我正在使用Express构建一个API服务器,它将与移动设备上的HTML5应用程序通信.我决定使用PostgreSQL,因为我的数据是"非常关系"的,而PostgreSQL新的JSON数据类型将使我的生活更轻松.
不幸的是,我找不到PostgreSQL的任何库利用新的JSON数据类型或暴露它.我想过使用Sequelize和一个很好的ORM或使用raw pgsql模块滚动我自己的东西.
有人能说清楚吗?我在一些NodeJS stackexchange上问过这个问题,但我认为我们没有具体的那个.
小智 9
我喜欢https://github.com/brianc/node-postgres.它是积极开发的,只是一个很好的薄层.
要在准备好的查询中使用json类型,只要JSON.stringify
你想要存储为json的任何东西(无论如何都是postgres想要的).
Objection.js对关系数据以及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('*')
Run Code Online (Sandbox Code Playgroud)
将创建如下更新查询:
update "ModelWithJsonColumn" set
"jsonColumn" = jsonb_set("jsonColumn", '{attribute}', to_jsonb('new value'), true),
"otherColumn" = "jsonColumn"#>'{extractThisAttribute}'
where "id" = 1 returning *
Run Code Online (Sandbox Code Playgroud)
同样ref()
,几乎每个查询生成器方法都可以使用语法,例如
.select(['id', ref('jsonArrayColumn:[0]')])
Run Code Online (Sandbox Code Playgroud)
要么
.where('name', ref('jsonColumn:middleName'))
Run Code Online (Sandbox Code Playgroud)
甚至连
.join('PetTable',
ref('PetTable.jsonColumn:details.name'),
'=',
ref('ThisTable.someOtherJsonbColumn:dogName'))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14144 次 |
最近记录: |