Node.js “续集”;Instagram般的追随者”;模型

Node.js “续集”;Instagram般的追随者”;模型,node.js,sequelize.js,Node.js,Sequelize.js,对标题感到抱歉;我不知道如何更好地表达它。但我试图实现的是,只要用户A可以跟随用户B。我遇到的问题是用户A可以跟随用户B多次。我不确定如何使用Sequelize 跟随者模型: module.exports = function(sequelize, DataTypes) { var followers = sequelize.define('followers', { userId: { type: DataTypes.INTEGER, allowNull:

对标题感到抱歉;我不知道如何更好地表达它。但我试图实现的是,只要
用户A
可以跟随
用户B
。我遇到的问题是
用户A
可以跟随
用户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;
}
数据库中的示例数据:

如您所见,
userid1
可以跟随
followerid1
多次。(忽略他们自己在跟踪自己的事实)。你知道我该如何防止这种情况发生吗?是否有一些东西可以添加到模型中,或者我必须执行
.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 |
+----+--------+------------+---------------------+---------------------+

这里的答案是查找或创建。查找其中的userid=id和followerid=followerid。如果找不到,就创建它。我在想,最好是
查找
(如果找到,就删除列,这意味着用户正试图解除对特定用户的跟踪)&
如果未找到
则只需创建关联?@GrimurD您的想法是什么?这是一个好主意,使其成为一个简单的切换,并减少所需的代码:)如果在添加到表之前执行get,则如果返回实体,则此操作应该有效,然后不要添加。