gpt4 book ai didi

postgresql - Feather.js + Sequelize + postgres 11 : How to patch a jsonb column?

转载 作者:行者123 更新时间:2023-12-03 22:35:55 34 4
gpt4 key购买 nike

我想用同一个对象更新我的数据库的几行。
假设我有一列 customText 类型 jsonb ,其中包含一个对象数组
这是我的 Sequelize 模型:

  customText: {
type: DataTypes.JSONB,
allowNull: true,
field: "custom_text"
}
现在从客户端我发送一个对象:
const obj = {}        
const data = {
textid: "d9fec1d4-0f7a-2c00-9d36-0c5055d64d04",
textLabel: null,
textValue: null
};

obj.customText = data
api.service("activity").patch(null, obj).catch(err => console.log(err));
喜欢 documentation from feathers.js说如果我想替换多条记录,我发送一个等于 null 的 id。
所以现在问题来了,如果我这样做,我的列 customText 将只包含新对象,但我想要一个对象数组,所以我想将新数据推送到数组中。如何修补数据?
我的猜测是使用 hook in feathers.jsraw query with sequelize .但我不知道该怎么做。

最佳答案

我不太确定我的答案,但这个钩子(Hook)有效:

module.exports = function() {
return async context => {
debugger;
const sequelize = context.app.get("sequelizeClient");
const customText = JSON.stringify(context.data.customText[0]);
console.log(customField);
let query =
"UPDATE activity SET custom_text = custom_text || '" +
customText +
"' ::jsonb";
console.log(query);

await sequelize
.query(query)
.then(results => {
console.log(results);
context.results = results;
})
.catch(err => console.log(err));

return context;

我仍然有一个问题,因为在这个钩子(Hook)之后,补丁继续,所以它会再次更新我的数据库..所以我放了一个 disallow() hook .

另外,用这个钩子(Hook)我失去了能力 to listening to event

我也对查询有疑问,我不确定是否最好使用 :jsonb_insert over ||

关于postgresql - Feather.js + Sequelize + postgres 11 : How to patch a jsonb column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60627935/

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