Я использую sequenceize-cli для миграции и исследовал различные сценарии, но, похоже, нет четкого ответа на вопрос, как самостоятельно присоединиться. Я хочу иметь таблицу соединений под названием «Дружба», которая объединяет пользователей и друзей (которые, по сути, являются просто пользователями).
Точнее, пытаясь понять разницу между «сквозь» и «как» в этой ситуации.
1) Это мой стол дружбы. Запутался на второй ассоциации. Я создал два столбца, один из которых является идентификатором пользователя, а другой — идентификатором друга. Я надеюсь, что эта таблица будет связана с двумя пользователями, по одному в каждой таблице, с одним столбцом, имеющим псевдоним «friendId».
```
'use strict';
module.exports = function(sequelize, DataTypes) {
var friendship = sequelize.define('friendship', {
userId: DataTypes.INTEGER,
friendId: DataTypes.INTEGER
}, {
classMethods: {
associate: function(models) {
friendship.belongsTo(models.user);
friendship.belongsTo(models.user { as: "friend" });
}
}
});
return friendship;
};
```
2) Это моя пользовательская модель. Опять же, конкретно в объекте ассоциаций я не разбираюсь. Цель здесь состоит в том, чтобы иметь возможность вызывать user.friends и отображать все экземпляры друзей этого пользователя. Не уверен, что правильно использую ключевые слова «сквозь» и «как».
```
'use strict';
module.exports = function(sequelize, DataTypes) {
var user = sequelize.define('user', {
username: DataTypes.STRING,
password: DataTypes.STRING,
email: DataTypes.STRING
}, {
classMethods: {
associate: function(models) {
user.hasMany(models.friendship);
user.hasMany(models.user { as: "friends", through: models.friendship });
}
}
});
return user;
};
```