用户如何使用 sequelize postgres nodejs 互相点赞 post?

How can users like each others post using sequelize postgres nodejs?

我正在努力实现用户可以互相喜欢post。

这是我的点赞模型:

const Likes = db.define("Likes", {

id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
  },
  PostId: {
  type: Sequelize.INTEGER,
   references: {
  model: "Post",
  key: "id",
   },
onUpdate: "cascade",
onDelete: "cascade",
 },
 userId: {
type: Sequelize.INTEGER,
references: {
  model: "User",
  key: "id",
},
onUpdate: "cascade",
onDelete: "cascade",
 },
 createdAt: {
allowNull: false,
type: Sequelize.DATE,
 },
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
  },

这是我的 Post 型号:

id: {
  type: Sequelize.INTEGER,
  primaryKey: true,
  autoIncrement: true,
},
title: {
  type: Sequelize.STRING,
},
userId: {
  type: Sequelize.INTEGER,
},

这是我的用户模型:

id: {
  type: Sequelize.INTEGER,
  primaryKey: true,
  autoIncrement: true,
},
name: {
  type: Sequelize.STRING,
},

这是我的联想:

db.Likes.belongsTo(db.User, { foreignKey: "userId", targetKey: "id" });
db.Likes.belongsTo(db.Post, { foreignKey: "PostId", targetKey: "id" });
db.Post.hasMany(db.Likes, { foreignKey: "PostId", targetKey: "id" });
db.User.hasMany(db.Likes, { foreignKey: "userId", targetKey: "id" });

我应该如何着手实施喜欢和不喜欢的动作?

应该是get请求还是post请求?

添加一个赞应该是一个 post 操作,以添加将用户链接到 post 的新关联。正如您所建议的那样,这应该是用户和 post 之间的一对一,因为不可能多次喜欢 post。

不喜欢就像删除关联一样简单,因此您可以通过对用户与 [=16] 之间的关联执行 get 来测试特定用户是否喜欢 post =]在你喜欢中间table。如果它不存在,则用户不喜欢它(并且应该被允许喜欢它),反之亦然。