Sequelize.js。如何在 JSON 数据类型中查找对象?
Sequelize.js. How to find object in JSON datatype?
我正在使用 postgres
数据库在 sequelize.js
中写入 query JSON
数据。
Postgres table 结构
id: integer,
name: string,
data: json
这是我的数据结构
{
id: 3,
name: "v4th79j"
data: {
phone: "123456789",
email: "example@gmail.com",
password: "a$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 数据的原始文本存储在数据库中,以白色 space 完成并保留任何键和任何重复键的所有顺序。
我将数据类型转换为 jsonb,这是在 9.4 版本的 PostgreSQL 中引入的。
使用 JSONB,它将 JSON 文档转换为 key/value 数据对的层次结构。所有白色 space 都被丢弃,仅使用一组重复键中的最后一个值,并且键的顺序丢失到存储它们的哈希所指示的结构中。我们可以在特定字段上应用索引,并且可以使用 sequelize.js 轻松搜索任何特定字段。
您可以通过实际示例阅读更多内容here
我正在使用 postgres
数据库在 sequelize.js
中写入 query JSON
数据。
Postgres table 结构
id: integer,
name: string,
data: json
这是我的数据结构
{
id: 3,
name: "v4th79j"
data: {
phone: "123456789",
email: "example@gmail.com",
password: "a$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 数据的原始文本存储在数据库中,以白色 space 完成并保留任何键和任何重复键的所有顺序。
我将数据类型转换为 jsonb,这是在 9.4 版本的 PostgreSQL 中引入的。
使用 JSONB,它将 JSON 文档转换为 key/value 数据对的层次结构。所有白色 space 都被丢弃,仅使用一组重复键中的最后一个值,并且键的顺序丢失到存储它们的哈希所指示的结构中。我们可以在特定字段上应用索引,并且可以使用 sequelize.js 轻松搜索任何特定字段。
您可以通过实际示例阅读更多内容here