如何使用 Sequel 从 PostgreSQL 正确地 return hstores
How to return hstores correctly from PostgreSQL using Sequel
我有一个带有 hstores 数组的 PostgreSQL table,hstore[]
,我正在使用 Sequel,但它不起作用。
它返回 hstore
数组的原始字符串表示,所以当我调用
DB[:invoices][id: 1337].line_items
我得到:
"{\"\\"amount\\"=>\\"795\\", \\"description\\"=>\\"Box\\"\",\"\\"amount\\"=>\\"200\\", \\"description\\"=>\\"Shipping\\"\"}"
而不是:
[{'amount' => 795, 'description' => 'Box' ...}]
我正在使用以下方式连接到数据库:
DB = Sequel.connect(ENV.fetch('DATABASE_URL')).tap do |db|
Sequel.extension :pg_hstore_ops
db.extension :pg_hstore
db.extension :pg_array
db.extension :pg_json
db.extension :pg_streaming
end
似乎 Sequel 扩展是依赖于顺序的。这仅在 db.extension :pg_hstore
被称为 after db.extension :pg_array
.
时有效
所以数据库的配置块应该是:
DB = Sequel.connect(ENV.fetch('DATABASE_URL')).tap do |db|
Sequel.extension :pg_hstore_ops
db.extension :pg_array
db.extension :pg_hstore # This is now after :pg_array!
db.extension :pg_json
db.extension :pg_streaming
end
我有一个带有 hstores 数组的 PostgreSQL table,hstore[]
,我正在使用 Sequel,但它不起作用。
它返回 hstore
数组的原始字符串表示,所以当我调用
DB[:invoices][id: 1337].line_items
我得到:
"{\"\\"amount\\"=>\\"795\\", \\"description\\"=>\\"Box\\"\",\"\\"amount\\"=>\\"200\\", \\"description\\"=>\\"Shipping\\"\"}"
而不是:
[{'amount' => 795, 'description' => 'Box' ...}]
我正在使用以下方式连接到数据库:
DB = Sequel.connect(ENV.fetch('DATABASE_URL')).tap do |db|
Sequel.extension :pg_hstore_ops
db.extension :pg_hstore
db.extension :pg_array
db.extension :pg_json
db.extension :pg_streaming
end
似乎 Sequel 扩展是依赖于顺序的。这仅在 db.extension :pg_hstore
被称为 after db.extension :pg_array
.
所以数据库的配置块应该是:
DB = Sequel.connect(ENV.fetch('DATABASE_URL')).tap do |db|
Sequel.extension :pg_hstore_ops
db.extension :pg_array
db.extension :pg_hstore # This is now after :pg_array!
db.extension :pg_json
db.extension :pg_streaming
end