[英]How to check if post has been liked by current user
我如何能夠檢查當前用戶是否喜歡該帖子。 理想情況下,這類似於喜歡 Instagram 上的帖子。 心為紅色表示您喜歡它。
我如何能夠為后端添加類似的功能。
我知道后端會有一個 boolean 表示用戶喜歡有自己的帖子。 鑒於我的 model,我正在使用 sequelize,我應該怎么做才能使此功能正常工作。
理想情況下,帖子中的“喜歡”列應表明我是否喜歡帖子。
req.session.user.id
獲取當前用戶。
帖子.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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.