Sequelize.js。如何在 JSON 数据类型中查找对象?

mab*_*224 0 node.js sequelize.js

我正在使用db写入query JSON数据。sequelize.jspostgres

Postgres 表结构

id: integer,
name: string,
data: json
Run Code Online (Sandbox Code Playgroud)

这是我的数据结构

{
    id: 3,
    name: "v4th79j"
    data: {
        phone: "123456789",
        email: "example@gmail.com",
        password: "$2a$10$qCttQ8leMPCzJfE",
        company_id: 2
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在写这样的查询

var filter = {};
// Filter by email for a user
filter.where = { data: { email: "example@gmail.com"} } ;
Entity.findOne(filter)
.then(function (entity) {
console.log(JSON.stringify(entity))
});
Run Code Online (Sandbox Code Playgroud)

但它不起作用。如何在 JSON 数据类型中查找对象?

mab*_*224 5

PostgreSQL 将json数据类型视为文本,因此不可能查询一个字段。它将 JSON 数据的原始文本存储在数据库中,包含空格并保留任何键和任何重复键的所有顺序。

我将数据类型转换为 PostgreSQL 9.4版本中引入的jsonb。

使用 JSONB,它将 JSON 文档转换为键/值数据对的层次结构。所有的空白都被丢弃,只使用一组重复键中的最后一个值,并且键的顺序丢失到由它们存储的散列指示的结构中。我们可以在特定字段上应用索引,并且可以使用sequelize.js轻松搜索任何特定字段。

您可以在此处阅读有关实际示例的更多信息