Postgresql Feather.js+;续集+;postgres 11:如何修补jsonb列?
我想用同一个对象更新数据库中的几行。 假设我有一列customText类型jsonb,其中包含一个对象数组 这里是我的续集模型:Postgresql Feather.js+;续集+;postgres 11:如何修补jsonb列?,postgresql,sequelize.js,feathersjs,Postgresql,Sequelize.js,Feathersjs,我想用同一个对象更新数据库中的几行。 假设我有一列customText类型jsonb,其中包含一个对象数组 这里是我的续集模型: customText: { type: DataTypes.JSONB, allowNull: true, field: "custom_text" } 现在,我从客户端发送一个对象: const obj = {} const data = { textid: "d9fec1d4-0f7a-2c00
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));
如前所述,如果我想替换多个记录,我会发送一个等于null的id
现在问题来了,如果我这样做的话,我的列customText将只包含新对象,但我需要一个对象数组,所以我想在数组中推送新数据。如何修补数据
我的猜测是使用a和a。但是我不知道该怎么做。我不太确定我的答案,但这个钩子起作用了:
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;
我仍然有一个问题,因为在feathers中的这个钩子之后,补丁将继续,所以它将再次更新我的db。。所以我放了一个
还有,有了这个钩子,我失去了能力
此外,我还担心查询,我不确定是否最好使用:jsonb_insert over||