我需要在列中存储字符串数组,并通过此列进行查询。我尝试使用JSON数据类型的列,但我需要Op.like通过此JSON列进行[ www.example.com ]查询。示例:
{ actors: { [Op.like]: `%${actor}%`, }, },
但它不起作用。
oknwwptz1#
您可以在movies表中存储演员数组,但这不是在SQL中存储列表的有效方法。相反,应使用多对多关系。这意味着要有一个单独的演员表和一个将演员链接到电影的表。
const Movies = sequelize.define( MOVIES, # Add columns as normal, but no actors column. ); const Actors = sequelize.define( ACTORS, # Add columns as normal. ); Movies.belongsToMany(Actors); Actors.belongsToMany(Movies);
然后使用include查询电影演员。
include
const movie = await Movies.findOne({ where: { title: "Bad Taste" }, include: Actors, }); # and now work with movie.actors
这样更快,也更灵活。演员可以出现在许多电影中,而不必复制他们的数据,并且你可以为一个演员存储尽可能多的数据。SQL将强制每部电影的每个演员实际上都存在。
1条答案
按热度按时间oknwwptz1#
您可以在movies表中存储演员数组,但这不是在SQL中存储列表的有效方法。
相反,应使用多对多关系。这意味着要有一个单独的演员表和一个将演员链接到电影的表。
然后使用
include
查询电影演员。这样更快,也更灵活。演员可以出现在许多电影中,而不必复制他们的数据,并且你可以为一个演员存储尽可能多的数据。SQL将强制每部电影的每个演员实际上都存在。