用 Node 标准替换字符串(无查询)Sequelize
Replace string with Node standard (no query) Sequelize
我有通过 Sequelize 使用 MariaDB (MySQL) 的节点服务器。
我的数据库中有一些行看起来像这样,例如:
Id
clips
1
["videoId123456","videoId8910111213"]
2
["videoId123456"]
3
[]
4
["videoId123456"]
“剪辑”列是一个字符串,但在数组结构中。
我的任务是找到一种方法从剪辑列中删除特定的 videoId。例如,如果 API 路由获得 Id“videoId123456”,它将从第 1、2、4 行中删除。如果它获得 ID“videoId8910111213”,它将从第 1 行中删除。
我知道如何通过纯 MySQL 来做到这一点,例如:
UPDATE player
SET clips = REPLACE(clips ,'"videoId1234567"','')
WHERE clips LIKE '%"videoId1234567"%';
我知道我可以 运行 纯 SQL 命令将 Sequelize 作为字符串,例如:
await sequelize.query(
` UPDATE player
SET clips = REPLACE(clips ,'"videoId1234567"','')
WHERE clips LIKE '%"videoId1234567"%';
`, {
type: QueryTypes.UPDATE
});
但我想知道是否有任何方法可以通过纯 Sequelize 来完成,例如:
player.update({
'clips': 'clips.replace('"videoId1234567"','')'
where: { 'clips': [Op.like]: '"videoId1234567"' }
});
谢谢。
您可以使用 Sequelize.fn
amd Sequelize.col
来达到使用 replace
SQL 函数的目的:
player.update({
clip: Sequelize.fn('replace', Sequelize.col('clip'), '"videoId1234567"','')
}, {
where: { clip: { [Op.like]: '"videoId1234567"' } }
});
P.S。最好不要只替换此 JSON-like 数组中的子字符串,而更喜欢使用可以与 JSON 一起使用的 SQL 函数来处理数组(如果它适用于 MariaDB)。
我有通过 Sequelize 使用 MariaDB (MySQL) 的节点服务器。
我的数据库中有一些行看起来像这样,例如:
Id | clips |
---|---|
1 | ["videoId123456","videoId8910111213"] |
2 | ["videoId123456"] |
3 | [] |
4 | ["videoId123456"] |
“剪辑”列是一个字符串,但在数组结构中。
我的任务是找到一种方法从剪辑列中删除特定的 videoId。例如,如果 API 路由获得 Id“videoId123456”,它将从第 1、2、4 行中删除。如果它获得 ID“videoId8910111213”,它将从第 1 行中删除。
我知道如何通过纯 MySQL 来做到这一点,例如:
UPDATE player
SET clips = REPLACE(clips ,'"videoId1234567"','')
WHERE clips LIKE '%"videoId1234567"%';
我知道我可以 运行 纯 SQL 命令将 Sequelize 作为字符串,例如:
await sequelize.query(
` UPDATE player
SET clips = REPLACE(clips ,'"videoId1234567"','')
WHERE clips LIKE '%"videoId1234567"%';
`, {
type: QueryTypes.UPDATE
});
但我想知道是否有任何方法可以通过纯 Sequelize 来完成,例如:
player.update({
'clips': 'clips.replace('"videoId1234567"','')'
where: { 'clips': [Op.like]: '"videoId1234567"' }
});
谢谢。
您可以使用 Sequelize.fn
amd Sequelize.col
来达到使用 replace
SQL 函数的目的:
player.update({
clip: Sequelize.fn('replace', Sequelize.col('clip'), '"videoId1234567"','')
}, {
where: { clip: { [Op.like]: '"videoId1234567"' } }
});
P.S。最好不要只替换此 JSON-like 数组中的子字符串,而更喜欢使用可以与 JSON 一起使用的 SQL 函数来处理数组(如果它适用于 MariaDB)。