javascript - 如何检查当前用户是否喜欢帖子

标签 javascript sequelize.js

我如何能够检查当前用户是否喜欢该帖子。理想情况下,这类似于喜欢 Instagram 上的帖子。心是红色的,表示你喜欢它。

我如何才能为后端添加类似的功能。

我知道后端会有一个 bool 值,表示用户喜欢那里自己的帖子。我正在使用 sequelize,鉴于我的模型,我应该怎么做才能使此功能正常工作。

理想情况下,帖子中的喜欢列应该表明我是否喜欢帖子。
req.session.user.id 获取当前用户。

post.controller

 getPosts: async (req: Request, res: Response) => {
    await models.Post.findAll({
      include: [
        { model: models.User, as: "author", attributes: ["username"] },
        { model: models.Likes }
      ],
      order: [["createdAt", "DESC"]],
      limit: 6
    }).then(posts => {
      res.json(posts);
    });
  },

帖子(模型)
"use strict";
module.exports = (sequelize, DataTypes) => {
    var Post = sequelize.define("Post", {
        title: DataTypes.STRING,
        postContent: DataTypes.STRING,
        liked: {
            type: DataTypes.BOOLEAN,
            allowNull: false,
            defaultValue: false
        },
        likeCounts: {
            type: DataTypes.INTEGER,
            allowNull: false,
            defaultValue: 0
        },
        authorId: DataTypes.INTEGER
    }, {});
    Post.associate = function (models) {
        Post.belongsTo(models.User, {
            as: "author",
            foreignKey: "authorId",
            onDelete: "CASCADE"
        });
        Post.hasMany(models.Likes, {
            foreignKey: "resourceId",
            timestamps: false,
            targetKey: "id",
            onDelete: "CASCADE"
        });
    };
    Post.prototype.likedByMe = postId => { };
    return Post;
};
//# sourceMappingURL=post.js.map

喜欢(模型)
"use strict";
module.exports = (sequelize, DataTypes) => {
    var Likes = sequelize.define("Likes", {
        userId: DataTypes.INTEGER,
        resourceId: DataTypes.INTEGER,
        likeByMe: {
            type: DataTypes.BOOLEAN,
            defaultValue: false,
            allowNull: false
        }
    });
    Likes.associate = function (models) {
        // associations can be defined here
        Likes.belongsTo(models.User, {
            foreignKey: "userId",
            timestamps: false,
            onDelete: "CASCADE"
        });
        Likes.belongsTo(models.Post, {
            foreignKey: "resourceId",
            timestamps: false,
            onDelete: "CASCADE",
            targetKey: "id"
        });
    };
    return Likes;
};
//# sourceMappingURL=likes.js.map

最佳答案

就像是

const iLikeIt = Like.findOne({ where: {
    resourceId: postId,
    userId: req.session.user.id,
}})
if (iLikeIt) {
    // i liked it
} else {
    // i didn't like it
}

关于javascript - 如何检查当前用户是否喜欢帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58634239/

相关文章:

javascript - NPM 包 excel-as-json 提前触发回调

javascript - 如何使用 Prototype new Element() 构造函数添加事件处理程序?

javascript - 当我按下获取路由按钮时,我希望我的 javascript 变量存储在数据库中

sequelize.js - Sequelize Mock 试图进入数据库连接

node.js - Sequelize 命中数据库,为每个事务命令提供新查询

node.js - 如何修改 Sequelize 查询以在行创建时不发送 ID?

node.js - 为什么我在 Sequelize 查询中 OR 运算符内的条件 WHERE 被转换为 AND?

javascript - Rails + Ajax : destroy. js.erb 渲染成功,但 div(具有特定 id)未被删除

javascript - 多列 HTML 列表,第一列中有一定数量的元素?

javascript - 登录路由返回未通过身份验证的消息