使用NodeJS的PostgreSQL JSONtypes的最佳方式是什么?
我在这里面临一些分析瘫痪。 使用NodeJS编程数据库有太多的select,我有点遗憾。
我正在使用Express来构build一个API服务器,该服务器将与移动设备上的HTML5应用程序通信。 我决定使用PostgreSQL,因为我的数据是“非常关系的”,PostgreSQL的新的JSON数据types将使我的生活变得更加容易。
不幸的是,我找不到任何PostgreSQL的库来利用新的JSON数据types或暴露它。 我想过使用Sequelize和有一个很好的ORM或通过使用原始pgsql模块滚动我自己的东西。
有人可以提供线索吗? 我会问一些NodeJS stackexchange,但我不认为我们有一个具体的这一点。
我喜欢https://github.com/brianc/node-postgres 。 它积极发展,只是一个很好的薄层。
要在准备好的查询中使用jsontypes,只需要JSON.stringify
你试图存储为json的任何东西(这就是postgres想要的)。
pg-promise是使用PostgreSQL和Node JS的最简单的方法,它使用承诺扩展node-postgres来实现自动连接和事务处理。
Objection.js对关系数据和JSONB数据都有很好的支持。
你不必做任何技巧来parsing/串化JSON数据。 这一切都是自动完成的。 您可以声明模式以允许validation您要放入数据库的数据
可以将嵌套的关系对象层次结构插入到数据库中,并且将生成行来更正表格,并且您有javascript API来查询JSON列中的数据,因此不需要为此编写RAW SQL。
编辑:
不知道为什么在这里投票(当前为-2), Objection.js
仍然对节点世界中的PostgreSQL的JSONB操作有最好的支持(也是当前答案的唯一select,它对postgresql jsonb处理有特别的支持)。
最新增加的内容是支持仅修补JSONB列中的部分数据,其中objection.js自动为您构buildjsonb_set()
调用。
例如:
ModelWithJsonColumn.query().update({ 'jsonColumn:attribute' : 'new value', otherColum: ref('jsonColumn:extractThisAttribute') }).where('id', 1).returning('*')
将会像这样创build更新查询:
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'))
any-db与pg扩展名正在为我工作。
我也search了这个问题的答案,并find类似的相关问题的解决scheme。
var pg = require("pg"); var Promise = require("bluebird"); Object.keys(pg).forEach(function(key) { var Class = pg[key]; if (typeof Class === "function") { Promise.promisifyAll(Class.prototype); Promise.promisifyAll(Class); } }) Promise.promisifyAll(pg);
这允许你使用pg
和Promise
s。 详情在这里手动promisifying蓝鸟pg.connect
- python对象和json对象有什么区别?
- 我将如何build立一个没有图书馆的NodeJS Websocket服务器
- JSON.stringify throws RangeError:巨大对象的string长度无效
- 通过mongoose在mongoDB中创build无模式的收集
- Nodejsasynchronous执行
- 使用Webhook在Slack上发布自定义的JSON消息
- 如何从服务器(Node JS和Express)接收和使用客户端的JSON对象?
- 使用节点将stringparsing为JSON会产生意外的令牌,validation器说ok
- 如何使用Node.js从json文件中读取数据并将读取的数据显示到html中?