首页 > 解决方案 > 在 SQL 中处理集合

问题描述

我有这张表,我想在其中注册用户的喜欢。likes 的数据类型是数组。INT[]我不知道这是否是处理喜欢和不同的最佳方法我还没有找到一种有效的方法来操作集合以切换用户的喜欢/不喜欢。

我们可以像 SQL 中的关联数组一样使用 sthg 吗?或者,数组的最佳方法是什么?我找不到一个例子。感谢您为我指明正确的方向。

CREATE TABLE posts (
  pid SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(uid),
  author VARCHAR REFERENCES users(username),
  title VARCHAR(255),
  content TEXT,
  date_created TIMESTAMP,
  like_user_id INT[] DEFAULT ARRAY[]::INT[],
  likes INT DEFAULT 0
);

const likePost = (req, res, next) => {
  const values = [req.body.id, req.body.user_id];
  console.log(values);
  const query = `UPDATE posts SET likes = likes - 1 WHERE pid = $1, UPDATE posts SET likes[1] = $2 WHERE pid = $1`;
  pool.query(query, values, (q_err, q_res) => {
    if (q_err) return next(q_err);
    res.json(`post ${req.body.id} succcessfully remove `);
  });
};

标签: sqlpostgresqlassociative-array

解决方案


推荐阅读