Sequelize.js - пример N: M (для себя) с пользовательской таблицей соединений - PullRequest
0 голосов
/ 08 мая 2019

Может кто-нибудь показать мне 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.

...