Может кто-нибудь показать мне 2019 пример ассоциации N: M с самой собой (с той же моделью) с пользовательской таблицей соединений в Sequelize.js?
Я пытаюсь создать систему друзей для модели User
.Моя система (см. Выше) работает очень хорошо в Windows, но не работает в Linux (кажется, снова возникают проблемы с буквенными регистрами), поэтому я прошу полный пример того, что будет работать везде.
Мой текущий код: Модель User
:
const model = sequelize.define("User", {
username: {
type: DataTypes.STRING(32),
unique: true,
allowNull: false
},
...
}, {});
model.associate = models => {
model.belongsToMany(model, {
through: "Friends", //I also tried models.Friend but it not work on both
as: "friend",
foreignKey: "user_id" //I also tried models.Friend.user_id but it not work on both
});
model.belongsToMany(model, {
through: "Friends", //I also tried models.Friend but it not work on both
as: "friendof",
foreignKey: "friend_id" //I also tried models.Friend.friend_id_id but it not work on both
});
};
return model;
Модель Friend
:
module.exports = (sequelize, DataTypes) => {
const model = sequelize.define("Friend", {
active: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: false
}
}, {
hooks: {}
});
model.associate = models => {
// User have many Users as Friends
model.belongsTo(models.User, {
foreignKey: "user_id"
});
model.belongsTo(models.User, {
foreignKey: "friend_id"
});
};
return model;
};
Хорошо работает в среде Windows (XAMPP, MariaDB), но не в Linux (те же версии DB и Sequelize).Не удалось, потому что он пытается создать две таблицы (friends
, Friends
).Когда я использовал through: models.Friend
, он работал, но в таблице Friend
не было id
.