Sequelize“Instagram就像追随者”模式?

时间:2016-01-22 07:44:40

标签: node.js sequelize.js

对标题感到抱歉;我不知道如何更好地说出来。但我想要实现的就像User A可以遵循User B一样简单。我遇到的问题是User A可以多次关注User B。我不确定如何使用Sequelize阻止这种情况?

追随者模型:

module.exports = function(sequelize, DataTypes) {
  var followers = sequelize.define('followers', {
    userId: {
      type: DataTypes.INTEGER,
      allowNull: true,
      referenceces: {
        model: 'user',
        key: 'userId'
      }
    }, 
    followerId: {
      type: DataTypes.INTEGER,
      allowNull: true,
      referenceces: {
        model: 'user',
        key: 'userId'
      }
    },
  }, {
    classMethods: {
      // associate: function(models) {
      //   followers.belongsTo(models.user, {
      //     onDelete: "CASCADE",
      //     foreignKey: {
      //       allowNull: false
      //     }
      //   });
      // },
    },
    freezeTableName: true // Model tableName will be the same as the model name
  });

  return followers;
}

来自数据库的示例数据:

如您所见,userId 1可以多次关注followerId 1。 (忽略他们跟随自己的事实)。有什么想法,我怎么能防止这种情况发生?有什么东西我可以添加到模型中,还是我必须做.findOrCreate(...函数?

+----+--------+------------+---------------------+---------------------+
| id | userId | followerId | createdAt           | updatedAt           |
+----+--------+------------+---------------------+---------------------+
|  1 |      1 |          1 | 2016-01-22 05:00:21 | 2016-01-22 05:00:21 |
|  2 |      1 |          1 | 2016-01-22 05:01:28 | 2016-01-22 05:01:28 |
|  3 |      1 |          1 | 2016-01-22 05:39:49 | 2016-01-22 05:39:49 |
|  4 |      1 |          1 | 2016-01-22 07:35:55 | 2016-01-22 07:35:55 |
+----+--------+------------+---------------------+---------------------+

0 个答案:

没有答案