Как получить данные из базы данных Dynami c со связью в секвелировании? - PullRequest
0 голосов
/ 01 мая 2020

Я работаю над node js с postgres дБ и использую Sequelize ORM. мой код ниже, и я не знаю, что не так в моем коде. Пожалуйста, помогите мне.

Клиент. js

module.exports = (sequelize, DataTypes) => {
 var customers = sequelize.define('customers', {
    customerid: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        allowNull: false,
        autoIncrement: true
    },
    customername:
    {
        type: DataTypes.STRING(100),
        allowNull: false,
        unique: true
    },
    customertype:
    {
        type: DataTypes.STRING(25),
        allowNull: false,
    },
    firstname: DataTypes.STRING(30),
    primary_shopid: DataTypes.INTEGER,
    secondary_shopid: DataTypes.INTEGER
}, {
    timestamps: false,
    freezeTableName: true,
});

customers.associate = (models) => {
    customers.belongsTo(models.shops, {
        as: 'primary_shopid',
        foreignKey: 'primary_shopid'
    });
    customers.belongsTo(models.shops, {
        as: 'secondary_shopid',
        foreignKey : 'secondary_shopid'
      });
  };

 return customers;
};

Магазины. js

module.exports = (sequelize, DataTypes) => {
var shops = sequelize.define('shops', {
    shopid: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        allowNull: false,
        autoIncrement: true
    },
    shopfirstname: DataTypes.STRING(30),
    shoplastname: DataTypes.STRING(30)
}, {
    timestamps: false,
    freezeTableName: true
});

shops.associate = (models) => {
    shops.hasMany(models.customers, {
      as: 'primary_cus',
      foreignKey : 'primary_shopid'
    });
    shops.hasMany(models.customers, {
        as: 'secondary_cus',
        foreignKey : 'secondary_shopid'
      });
  };

return shop;
};

и это обе модели создаются на основе схемы имени области, как показано ниже

 db.sequelize.createSchema(schemaName).then(() => {
     db.sequelize.models.shops.schema(schemaName).sync();
     db.sequelize.models.customers.schema(schemaName).sync();
 });

Это все работает нормально, но когда я запускаю следующий запрос

db.sequelize.models.customers.schema(schemaname).findAll({
            include: [
                {
                    model: shops,
                    as: 'primary_shopid'
                }
            ]
        }).then((results) => {
                res.send(results);
 });

Это из-за этой ошибки, что не так в моем коде.

Unhandled rejection SequelizeDatabaseError: relation "shops" does not exist
at Query.formatError (********node_modules\sequelize\lib\dialects\postgres\query.js:366:16)
...