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

标签 node.js sequelize.js

我正在使用 postgres 数据库在 sequelize.js 中编写查询 JSON 数据。

Postgres表结构

id: integer,
name: string,
data: json

这是我的数据结构

{
    id: 3,
    name: "v4th79j"
    data: {
        phone: "123456789",
        email: "example@gmail.com",
        password: "$2a$10$qCttQ8leMPCzJfE",
        company_id: 2
    }
}

我正在编写这样的查询

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))
});

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

最佳答案

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

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

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

您可以通过实际示例了解更多信息 here

关于node.js - Sequelize.js。如何在 JSON 数据类型中查找对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34022620/

相关文章:

javascript - 种子文件中的模型创建或批量创建 promise

node.js - 同时支持 Webpack、Parcel 和 Rollup 的最佳方法?

mysql - Sequelize 迁移文件 : adding createdAt and updatedAt columns

javascript - 将数组插入 const 内 .then

javascript - 如何使用 Express & MySQL 和 JWT 实现成员(member)功能

node.js - Node 后续跟随/跟随关系

node.js - 如何限制 Sequelize 上的多对多关系

javascript - 如何从javascript(nodejs)程序调用python,而不创建子进程

node.js - 网络套接字 : cannot detect client connection on internet disconnect

node.js - 无法创建新的 Angular 项目