gpt4 book ai didi

sequelize.js - Sequelize 更新 JSONB 中的嵌套属性

转载 作者:行者123 更新时间:2023-12-02 08:12:27 26 4
gpt4 key购买 nike

我正在寻找一种方法来仅更新 jsonb 中的嵌套键/值柱子。
这是User模型:

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

当前 data列值:
{
'email':{'verified':false,'token':'random token'},
'phone:{'verified':true}
}

我要更新 email.verified属性(property)到 true使用 单例 update询问。

我尝试了以下代码:
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`);

关于sequelize.js - Sequelize 更新 JSONB 中的嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45287514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com