Sequelize.js JSONB中的续集更新嵌套属性

Sequelize.js JSONB中的续集更新嵌套属性,sequelize.js,jsonb,Sequelize.js,Jsonb,我正在寻找一种只更新jsonb列中嵌套的键/值的方法。 以下是用户型号: const User= sequelize.define('User', { id: DataTypes.INTEGER, name:DataTypes.STRING, // other fields data: DataTypes.JSONB }); 当前数据列值: { 'email':{'verified':false,'token':'random token'}, 'phone

我正在寻找一种只更新
jsonb
列中嵌套的键/值的方法。
以下是
用户
型号:

const User= sequelize.define('User', {
    id: DataTypes.INTEGER,
    name:DataTypes.STRING,
    // other fields
    data: DataTypes.JSONB
});
当前
数据
列值:

{
 'email':{'verified':false,'token':'random token'},
 'phone:{'verified':true}
}
我想更新
电子邮件。使用单个
更新
查询将
属性验证为
true

我尝试了以下代码:

models.User.update({'data.email.verified':true},
       {where:{id:1}}).then()...

models.User.update({data:{email:{verified:true}}},
       {where:{id:1}}).then()...
更新的专栏将是:

{
 'email':{'verified':true},
}
我也试过:

models.User.findById(1).then(user => {
    user.set('data.email.verified', true);
    user.save().then()...
});
这是可行的,但我不想只为更新字段执行两个查询(选择,然后更新)


是否可以使用带有单个更新查询的
sequelize
来执行此操作?

是的,您可以使用单个更新查询的sequelize来更新嵌套的json属性,但必须使用原始查询

sequelize.query(`UPDATE users SET data = jsonb_set(data, '{email,verified}', 'true', true) WHERE id = 1`);