使用Postgres中的Sequelize更新特定的JSON字段

时间:2016-09-12 22:52:44

标签: json postgresql sequelize.js

我有一个"用户"表格中的一个字段" info"是一个JSON结构:

用户表包含以下字段:id,name,info,created

信息提交具有以下结构:

info:{   电子邮件,   密码,   设备:{     类型,     代币   } }

如何使用Sequelize更新Postgres中特定用户的令牌字段?

2 个答案:

答案 0 :(得分:2)

我知道这是一个关于sequelize.js的问题,但我对此并不了解,所以让我给出关于postgresql的一般答案(随意忽略它)。首先,postgresql不支持修改json值。 json列主要用于在数据库中存储JSON数据,而不是用于操作JSON数据。如果您确实想要在数据库中操作JSON数据,则必须使用jsonb列。可以使用jsonb函数和jsonb_set运算符帮助修改||。在您的情况下,如果您可以运行原始SQL查询,则可以执行以下操作:

UPDATE "user"
SET info = jsonb_set(info,'{device,token}','123')
WHERE id = 31;

答案 1 :(得分:0)

user.findOne({where: {id: 31}}).then((u) => {
u.device.update(info: {type, token})

});

这是一个用户表。 id 为 31 来更新 type 和 token 的值