首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Sequelize从另一个表中缺少的postgresql表中获取数据

问使用Sequelize从另一个表中缺少的postgresql表中获取数据
EN

Stack Overflow用户
提问于 2017-09-12 10:01:34
回答 1查看 31关注 0票数 0

我尝试从另一个表中缺少的Postgres表中检索数据,但收到了SequelizeLoadingError。

我试图检索一个没有被特定用户租用的书籍列表。

图书控制器

代码语言:javascript
复制
  getBooks(req, res) {
    const userId = req.params.userId;
    return Book
      .findAll({
        where: Sequelize.literal('RentedBook.userId IS  null'),
        include: [
          { model: RentedBook }
    ]
  })
   .then((books) => {
    if (books.length < 1) {
      res.status(400).send({
        message: 'There is no book in the database'
          });
        } else {
          res.status(201).send(books);
        }
      })
      .catch(error => res.status(404).send(error));
  },

图书模型

代码语言:javascript
复制
export default (sequelize, DataTypes) => {
  const Books = sequelize.define('Book', {
   title: {
      type: DataTypes.STRING,
      allowNull: DataTypes.FALSE,
    },
    isbn: {
      type: DataTypes.TEXT,
      required: true,
    },
    total: {
      type: DataTypes.INTEGER,
      required: true
    },
    prodYear: DataTypes.STRING,
    catId: DataTypes.INTEGER,
    cover: DataTypes.STRING,
    author: DataTypes.STRING,
    description: DataTypes.TEXT
  }, {
    classMethods: {
      associate: (models) => {
        // associations can be defined here
         Books.hasMany(models.RentedBook, {
      foreignKey: 'bookId'
        });
        Books.hasOne(models.Category, {
          foreignKey: 'catId',
          onDelete: 'CASCADE'
        });
      }
   }
  });
  return Books;
};

租用图书模型

代码语言:javascript
复制
export default (sequelize, DataTypes) => {
  const RentedBook = sequelize.define('RentedBook', {
    bookId: DataTypes.INTEGER,
    userId: DataTypes.INTEGER,
    toReturnDate: DataTypes.DATE,
    returnDate: DataTypes.DATE,
    returned: {
      type: DataTypes.BOOLEAN,
      defaultValue: false
    }
  }, {
    classMethods: {
      associate: (models) => {
    // associations can be defined here
        RentedBook.BelongsTo(models.Book, {
          foreignKey: 'bookId',
          onDelete: 'CASCADE'
        });
        RentedBook.BelongsTo(models.User, {
          foreignKey: 'userId',
          onDelete: 'CASCADE'
        });
      }
    }
  });
  return RentedBook;
};

我将感谢任何帮助我去取书表中的书籍,但以前还没有被用户租用过。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-22 20:28:53

通过查询图书数据库,获取与当前登录的用户名不相同的租来的图书列表,解决了这一问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46173485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档