arrays - Waterline 中的 Postgres 数组数据类型正在转换为文本

标签 arrays postgresql sails.js waterline

我需要创建一个应用程序。我们使用 PostgreSQL 作为底层数据库。我们决定使用 Postgres 的原因是因为我们想要一个关系数据库,因为存在各种实体及其关系(这对于像 Mongo 这样的 NoSQL 数据库来说似乎并不理想,因为会有多个连接),同时我们希望利用Postgres 的数组和 JSON 数据类型在 MySQL 中不可用。

我们使用 SailsJS 框架是因为它的简单性、内置的 sockets.io API 以及我之前(尽管非常有限)使用该框架的经验(使用 MongoDB 作为底层数据库)。它使用 Waterline 作为底层 ORM。

Model.query() 确实是一个很棒的功能,它允许我运行 native SQL 查询。

我面临的问题与使用 Postgres 数组数据类型定义模型有关。默认情况下,如果我 checkin 数据库,该列将更改为数据库中的文本数据类型。 我需要使用 postgre 的内置数组函数来操作数组字段。但为此,我需要能够创建具有所需类型的表。我需要知道这怎么可能?

最佳答案

定义 Waterline 模型时使用 json 字段类型,例如:

module.exports = {

    attributes: {

        name: 'string',
        my_array: 'json',
        ...etc...
    }

}

然后可以将数组数据直接保存到模型中,例如:

User.create({name: 'bob', my_array: [1,2,3]}).exec(...);

它将由底层适配器转换为 JSON 或从 JSON 转换。对于 sails-postgresql,它将使用 json 列类型。

关于arrays - Waterline 中的 Postgres 数组数据类型正在转换为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184253/

相关文章:

arrays - 字段必须是 BSON 类型的对象

php - 在 PHP 中保持数组排序

postgresql - PL/pgSQL : accessing fields of an element of an array of custom type

node.js - 如何在 sailsjs api 上正确配置 CORS

javascript - 如何优化循环以插入数据库?

javascript - Javascript 中类似数组的对象

c++ - 结构初始化数组

python - 适用于 windows 和 postgres 8 的 psycopg2 二进制包?

PostgreSQL:在 PostgreSQL 中同时修改所有表的 OWNER

node.js - Sails.js 在给定时间或每天结束时使 session 过期