我想用相同的对象更新数据库的几行。假设我有一列customText类型jsonb,其中包含对象数组
这里是我的续集模型:
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所说的,如果我想替换多个记录,我会发送一个等于空的ID。
所以现在出现了问题,如果我这样做,我的列customText将仅包含新对象,但是我想要一个对象数组,因此我想将新数据推送到该数组中。如何修补数据?
我的猜测是使用hook in feathers.js和raw query with sequelize。但是我不确定该怎么做。
我不太确定我的回答,但是这个钩子可以正常工作:
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;
我仍然有一个问题,因为在挂上钩子之后,补丁继续,因此它将再次更新我的数据库。.所以我放了disallow() hook。
而且,由于这个问题,我失去了to listening to event的能力
而且我也关心查询,我不确定在||上使用:jsonb_insert是否更好?