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