NodeJS 如何在SQLite表列中存储字符串数组

8yoxcaq7  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(143)

我需要在列中存储字符串数组,并通过此列进行查询。我尝试使用JSON数据类型的列,但我需要Op.like通过此JSON列进行[ www.example.com ]查询。示例:

{
  actors: {
    [Op.like]: `%${actor}%`,
  },
},

但它不起作用。

oknwwptz

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查询电影演员。

const movie = await Movies.findOne({
  where: { title: "Bad Taste" },
  include: Actors,
});

# and now work with movie.actors

这样更快,也更灵活。演员可以出现在许多电影中,而不必复制他们的数据,并且你可以为一个演员存储尽可能多的数据。SQL将强制每部电影的每个演员实际上都存在。

相关问题