sql >> データベース >  >> RDS >> PostgreSQL

関連モデルを含めると、熱心な読み込みエラーが発生します

    私は実用的な答えを得ました。この例では、部門が多くのポジションを持つことができるスキームがあります。役職には部門が含まれ、部門にはその役職が含まれます。

    models / Department.js

    module.exports = (sequelize, DataTypes) => 
    {
    const Sequelize = require('sequelize');
    const Department = sequelize.define('Department', 
    {
        ...
    }
    Department.associate = function(models) {
        Department.hasMany(models.Position, {
          foreignKey: 'department_id',
          as: 'positions'
        });
    };
    
    return Department;
    };
    

    models / Position.js

    module.exports = (sequelize, DataTypes) => 
    {
    const Sequelize = require('sequelize');
    const Position = sequelize.define('Position', 
    {
        ...
    }
    
    Position.associate = function(models) {
        Position.belongsTo(models.Department, {
            foreignKey: 'department_id',
            as: 'department',
            onDelete: 'CASCADE'
        });
    };
    
    return Position;
    };
    

    controllers / departmentController.js

    exports.all = async function(req, res)
    {
    return Department
        .findAll({include: [ 'positions' ]})
        .then((data) => {
            if (!data) { return res.status(400).json({status: 400,message: 'Registro não encontrado', data: data }); }
            return res.status(200).json(data);
        })
        .catch((error) => {
            return res.status(400).json({message: 'Falha no banco de dados.', data: error})
        });
    };
    

    controllers / positionController.js

    exports.all = async function(req, res)
    {
    return Position
        .findAll({include: [ 'department' ]})
        .then((data) => {
            if (!data) { return res.status(400).json({status: 400,message: 'Registro não encontrado', data: data }); }
            return res.status(200).json(data);
        })
        .catch((error) => {
            console.log(error);
            return res.status(400).json({message: 'Falha no banco de dados.', data: error})
        });
    };
    


    1. 部分インデックスまたはフィルター処理されたインデックスのmysqlでの回避策?

    2. PHPとチェックボックスのチェックボックスはテーブルに移動します

    3. サブクエリは複数の行を返します

    4. PDOプリペアドステートメントfetch()は二重の結果を返します