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,则如果返回实体,则此操作应该有效,然后不要添加。