node.js - Sequelize 关联问题,

标签 node.js sequelize.js

在设置与 sequelize 库的关联时遇到了一些麻烦。不断收到 SequelizeEagerLoadingError:客户端与许可证无关!

这是我的两个模型。

'use strict';

module.exports = (sequelize, DataTypes) => {
  const License = sequelize.define('License', {
    id: {
      type: DataTypes.UUID,
      defaultValue: DataTypes.UUIDV4,
      primaryKey: true,
      validate: { isUUID: 4 }
    },
    client_id: {
      type: DataTypes.UUID,
      validate: { isUUID: 4 }
    }
  }, {
    classMethods: {
      associate: function (models) {
        License.belongsTo(models.Client, { foriegnKey: 'client_id' });
      }
    }
  });
  return License;
};



'use strict';

module.exports = (sequelize, DataTypes) => {
  const Client = sequelize.define('Client', {
    id: {
      type: DataTypes.UUID,
      defaultValue: DataTypes.UUIDV4,
      primaryKey: true
    },
    name: { type: DataTypes.STRING }
  }, {
    classMethods: {
      associate: function (models) {
        Client.hasOne(models.License);
        Client.hasMany(models.Event);
        Client.hasMany(models.Clips);
      }
    }
  });
  return Client;
};


这是我设置的 Controller ,我知道模型工作正常,因为我使用 findbyID() 函数进行了测试。

'use strict';

const db = require('../models/index.js');

class Controller {
    constructor(router) {
        router.get('/:id', (req, res, next) => {

            // db.License.findById(req.params.id).then(function(license) {
            //     res.status(200).json(license);
            // }, function(err) {
            //     res.status(404).json({
            //         error: 'License does not exist!'
            //     });
            // });
            db.License.findAll({
                include: [{ model: db.Client }]
            })
            .then(function(license) {
                res.status(200).json(license);
            }, function(err) {
                console.log(err);
                res.status(404).json({
                    error: 'License does not exist!'
                });
            });
        });
    }
}

module.exports = router => new Controller(router);


帮助会很棒的感觉 super 迷路。 sequelize.sync() 正在运行并且没有抛出任何错误。试图弄清楚我是否有命名问题,可能是因为某些东西需要大写或不大写,但事实并非如此。

最佳答案

我在 Sequelize v4+ 中也面临这种错误。我通过一些小的改动修改了我的模型,希望对你有用。
像这样编写许可证模型

'use strict';

module.exports = function (sequelize, DataTypes) {
    const License = sequelize.define('License', {
        id: {
            type: DataTypes.UUID,
            defaultValue: DataTypes.UUIDV4,
            primaryKey: true,
            validate: {isUUID: 4}
        },
        client_id: {
            type: DataTypes.UUID,
            validate: {isUUID: 4}
        }
    });
    License.associate = function (models) {
        License.belongsTo(models.Client, {foriegnKey: 'client_id'});
    };
    return License;
};


像这样修改您的客户端,

'use strict';

module.exports = function (sequelize, DataTypes) {
    const Client = sequelize.define('Client', {
        id: {
            type: DataTypes.UUID,
            defaultValue: DataTypes.UUIDV4,
            primaryKey: true
        },
        name: {type: DataTypes.STRING}
    });
    Client.associate = function (models) {
        Client.hasOne(models.License);
        Client.hasMany(models.Event);
        Client.hasMany(models.Clips);
    };

    return Client;
};

关于node.js - Sequelize 关联问题,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46436200/

相关文章:

javascript - Node JS-如何在使用 express-fileupload 时限制文件大小

javascript - 在 Lua VM 上运行 JavaScript 有意义吗?

javascript - 在 Node.js 同步/异步性能和速度中移动 100.000 多个文件

node.js - 在 socket.io 上设置高关闭超时是否安全?

node.js - Sequelize 自引用不能进行连接

javascript - 使用 Sequelize 保存对象

javascript - spawnSync/bin/sh ENOBUFS

node.js - Sequelize 多对多关联 : getter/setter methods do not exist

node.js - 使用 sequelize 进行简单选择时的数据库错误

node.js - 如何在 Sequelize 中以 JSON 格式返回数据