Sequelize:检查并添加BelongsToMany(N到N)关系

时间:2018-03-24 13:11:06

标签: javascript mysql node.js orm sequelize.js

我的应用程序许多用户谁可以喜欢很多帖子(N到N)。这就是为我的模型(Sequelize Doc)分配以下“belongsToMany”关系的原因:

// 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);
};

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

  1. 检查帖子是否存在。 (似乎工作)
  2. 如果是,请检查用户是否已经喜欢此帖子。
  3. 如果没有,请在User和Post之间指定N到N的关系。 (似乎工作)

    +----+--------+--------+
    | id | userId | postId |
    +----+--------+--------+
    |  1 |      2 |      3 |
    +----+--------+--------+
    
  4. 现在我遇到了问题,我无法检查用户是否已经喜欢过帖子。 “req.user.hasPost(postToLike).isFulfilled()”总是返回false,即使我确实可以在我的“PostLikes”数据库表中看到正确的关系。那么我怎么能正确地说:

    1. 检查用户是否已经喜欢帖子。
    2. 分配此关系。
    3. 并删除与Sequelize的关系?
    4. BTW这就是我的PostLikes Table的样子:

      with open('CSV\globalLS', 'a', newline = "") as f:
          writer = csv.writer(f,quoting=csv.QUOTE_ALL )
          writer.writerow([name, datetime.datetime.now().date(), openPrice, highPrice, lowPrice, closePrice])
      

1 个答案:

答案 0 :(得分:1)

查看文档,没有提及 isFulfilled()。 你试过req.user.hasPost(postToLike)吗? (Sequelize Doc