续集:删除JSONB属性(使用PostgreSQL)

Pen*_*ica 8 postgresql node.js sequelize.js jsonb

我正在使用sequelize(v3.12.2),pg(4.4.3),PostgreSQL(v9.4)和Node(v4.1.2)。

我有一个包含JSONB数据类型字段的模型。

var User = {
  data: {
    type: Sequelize.JSONB
}
Run Code Online (Sandbox Code Playgroud)

现在我可以做

User.findOne({where: {id: 12345}})
  .update({data: {x: 'foo'}});
Run Code Online (Sandbox Code Playgroud)

User.findOne({where: {id: 12345}})
  .update({'data.y': 'bar'});
Run Code Online (Sandbox Code Playgroud)

现在,如果我只想删除该data.x属性,如何用一个命令删除它?

User.findOne({where: {id: 12345}})
  .update({'data.x': null});
Run Code Online (Sandbox Code Playgroud)

显然不起作用。实际上,结果数据对象应为:

{y: 'bar'}
Run Code Online (Sandbox Code Playgroud)

并不是:

{x: null, y: 'bar'}
Run Code Online (Sandbox Code Playgroud)

如何使用Sequelize做到这一点?谢谢你的帮助!

Tar*_*ani 1

我认为下面应该有效

User.findOne({where: {id: 12345}})
  .update({'data': sequelize.literal("data - 'x' ")});
Run Code Online (Sandbox Code Playgroud)

还没有测试过,但如果不起作用请告诉我。解决方案将仅沿着这些思路