Не удается прочитать свойство 'menu_id' из неопределенного - PullRequest
0 голосов
/ 17 апреля 2020

Я попытался создать базу данных с 3 таблицами: restaurant, restaurant_menu, menu, и их отношения в ресторане имеют много меню, и меню может принадлежать многим рестораторам путем продолжения в Nodejs.

restaurant.model. js

'use strict';
module.exports = (sequelize, DataTypes) => {
    const restaurant = sequelize.define('restaurant', {
        id: {
            type: DataTypes.INTEGER,
            allowNull: false,
            autoIncrement: true,
            primaryKey: true
        },
        name: DataTypes.STRING,
        address: DataTypes.STRING,
        phone: DataTypes.STRING,
        lat: {
            type: DataTypes.DOUBLE,
            allowNull: false,
            defaultValue: 0
        },
        lng: {
            type: DataTypes.DOUBLE,
            allowNull: false,
            defaultValue: 0
        },
        user_owner: {
            type: DataTypes.INTEGER,
            defaultValue: 0
        },
        image: {
            type: DataTypes.TEXT,
            allowNull: false
        },
        payment_url: {
            type: DataTypes.TEXT,
            allowNull: false
        }
    }, {
        freezeTableName: true,
        timestamps: false
    });
    restaurant.associate = function (models) {
        // associations can be defined here
        restaurant.belongsToMany(models.menu, {
            through: {
              model: models.restaurant_menu
            },
            foreignKey: 'restaurant_id'
        })
    };
    return restaurant;
};

menu.model. js

'use strict';
module.exports = (sequelize, DataTypes) => {
    const menu = sequelize.define('menu', {
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            allowNull: false
        },
        name: DataTypes.STRING(50),
        description: DataTypes.STRING(500),
        image: DataTypes.TEXT
    }, {
        freezeTableName: true,
        timestamps: false
    });
    menu.associate = function (models) {
        // associations can be defined here
        menu.belongsToMany(models.restaurant, {
            through: {
                model: models.restaurant_menu
            },
            foreignKey: "menu_id"
        });
    };
    return menu;
};

restaurant_menu.model. js

'use strict';
module.exports = (sequelize, DataTypes) => {
    const restarant_menu = sequelize.define('restarant_menu', {
        restaurant_id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            allowNull: false,
            references: {
                model: 'restaurant'
            }
        },
        menu_id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            allowNull: false,
            references: {
                model: 'menu'
            }
        }
    }, {
        freezeTableName: true,
        timestamps: false
    });
    restarant_menu.associate = function (models) {
        // associations can be defined here
    };
    return restarant_menu;
};

i попытался запустить миграцию, но я получаю сообщение об ошибке:

Cannot read property 'menu_id' of undefined

Как это исправить?

1 Ответ

0 голосов
/ 17 апреля 2020

Я полагаю, что вы пишете старый синтаксис, оформление документации.

https://sequelize.org/master/manual/advanced-many-to-many.html

...