mysql - X 与 Y 无关(Sequelize/ExpressJS)

标签 mysql node.js express sequelize.js

我是 NodeJS 的新手,有 express 和 Sequelize。当我想创建图书租赁时,控制台会提示我“图书与租赁无关”。
当我将表迁移到 sql 数据库时,id 就在它们的位置并且我的播种机正在工作。
你有解决办法吗?
错误:EagerLoadingError [SequelizeEagerLoadingError]:图书与租金无关!
书籍型号:

'use strict';
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class Book extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate(models) {
      // define association here
      this.belongsTo(models.Author);
      this.belongsTo(models.Category);
      this.hasMany(models.Rent, {
        foreignKey: 'id'
      });
    }
  }
  Book.init(
    {
      authorId: DataTypes.INTEGER,
      categoryId: DataTypes.INTEGER,
      title: DataTypes.STRING,
      description: DataTypes.TEXT,
      amount: DataTypes.INTEGER
    },
    {
      sequelize,
      modelName: 'Book'
    }
  );
  return Book;
};
租用型号:
'use strict';
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class Rent extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate(models) {
      // define association here
      this.belongsTo(models.User);
      this.belongsTo(models.Book);
    }
  }
  Rent.init(
    {
      userId: DataTypes.INTEGER,
      bookId: DataTypes.INTEGER,
      in: DataTypes.DATE,
      back: DataTypes.DATE
    },
    {
      sequelize,
      modelName: 'Rent'
    }
  );
  return Rent;
};
谢谢你们的帮助!

最佳答案

尝试用旧代码替换新代码。它指出,rent 有一个来自 book 表的外键,键为 bookId。
旧代码

 this.hasMany(models.Rent, {
        foreignKey: 'id'
      });
新代码
 this.hasMany(models.Rent, {
        foreignKey: 'bookId'
      });

关于mysql - X 与 Y 无关(Sequelize/ExpressJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67794845/

相关文章:

mysql - 当您仍然可以加入公共(public)列时,添加 PK 和 FK 有什么区别?

javascript - Node Passport-azure-ad 错误 : "unknown authentication strategy "oauth-bearer""

IE8 上的 Node.js HTTPS Hello world 服务器

javascript - 在函数外部声明变量

node.js - 如何删除 express js 服务器中超过 24 小时的 Mongoose 文档?

java - 没有代码生成的 Jooq insert 语句

mysql - 用户设置的数据库设计

php - 为每个查询编写一个 PHP 页面是一种很好的编程技巧吗?

Node.JS 包含 Jade 文件 errno : -2,

node.js - TypeScript、NodeJs/Express 和 Mongo(使用 VS 2013)