gpt4 book ai didi

javascript - Sequelize : Check and add BelongsToMany (N to N) relation

转载 作者:可可西里 更新时间:2023-11-01 06:33:59 26 4
gpt4 key购买 nike

我的应用程序有许多用户,他们可以喜欢很多帖子(N 到 N)。这就是为什么我为我的模型 (Sequelize Doc) 分配了以下“belongsToMany”关系:

// Post Model
models.Post.belongsToMany(models.User, { through: models.PostLikes});

// User Model
models.User.belongsToMany(models.Post, { through: models.PostLikes});

在我的 Post Controller 中,我得到了“likePost”函数的以下用例:

  1. 检查帖子是否存在。 (似乎有效)
  2. 如果是,请检查用户是否已经喜欢该帖子。
  3. 如果不是,则分配 User 和 Post 之间的 N 对 N 关系。 (似乎有效)

    // User likes Post
    exports.likePost = async (req, res) => {
    const postToLike = await Post.findById(req.body.postId);
    // Check if the Post exists
    if (!postToLike) {
    return res.status(404).json({ error: { message: 'Post not found.' }});
    }

    // Did user already like the post?
    // HERE IS THE NOT WORKING PART:
    if (await req.user.hasPost(postToLike).isFulfilled()) {
    return res.status(422).json({ error: { message: 'Already liked post.' }});
    }

    // add Like
    await req.user.addPost(postToLike);
    return res.send(postToLike);
    };

现在我遇到了问题,我无法检查用户是否已经喜欢了一个帖子。 “req.user.hasPost(postToLike).isFulfilled()”总是返回 false,即使我确实可以在我的“PostLikes”数据库表中看到正确的关系。那么我怎样才能正确:

  1. 检查用户是否已经喜欢了一个帖子。
  2. 分配此关系。
  3. 然后删除与 Sequelize 的关系?

顺便说一句,这是我的 PostLikes 表的样子:

+----+--------+--------+
| id | userId | postId |
+----+--------+--------+
| 1 | 2 | 3 |
+----+--------+--------+

最佳答案

查看文档,没有提及isFulfilled()。您是否尝试过 req.user.hasPost(postToLike) ?( Sequelize Doc )

关于javascript - Sequelize : Check and add BelongsToMany (N to N) relation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49465065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com