如何通过 Sequel 检索存储在 postgresql 中的数组作为数组?

How can I retrieve an array stored in postgresql via Sequel as an array?

我有一个 ruby 脚本,一个 postgres 数据库,我使用 Sequel gem 连接到数据库。

我想存储和检索记录,其中一些列值是数组(数据类型设置为 text[])。因此,我为 sequel.

加载 pg_array 扩展

我创建了一个散列{id: 1, key1: Sequel.pg_array(["lorem ipsum", "caesar", "quidquid id est, timeo danaos"])}

我可以通过 table.insert hash 插入哈希并创建正确的记录。

 id |                          key1                          
----+--------------------------------------------------------
 1  | {"lorem ipsum",caesar,"quidquid id est, timeo danaos"}

根据这个有利的结果,我推断 databasesequel gempg_array 扩展都已正确设置。

但是,当我再次使用 advisers.where(id: 1).all 通过 sequel 检索记录时,我得到了这个

[{:id => 1, :key1 => "{\"lorem ipsum\",caesar,\"quidquid id est, timeo danaos\"}"}]

:key1 的值返回为 String。我无法对文档做出正面或反面的说明。有没有人有办法将它直接转回它开始的数组:["lorem ipsum", "caesar", "quidquid id est, timeo danaos"]?

非常感谢新手

选中 this,在您的模型中添加以下内容

serialize :key1, Array

这通常在您将 pg_array 扩展加载到您的 Sequel::Database 实例时处理。也许您只是加载了 pg_array 扩展文件,而没有将其加载到您的 Sequel::Database 实例中。你可能做过:

Sequel.extension :pg_array

而不是:

DB.extension :pg_array

您需要将 pg_array 扩展加载到您的 Sequel::Database 实例中,以便检索的值是 array-like 对象而不是字符串。