0

您好,我需要从与我相关的 3 个表中获取信息,但我不知道如何使用 sequelize 执行此操作,我在文档中没有找到有关如何执行此操作的任何内容

模型:

const { Model, DataTypes } = require ('sequelize');
const sequelize = require('../database/index');

class Products extends Model {
    static init(sequelize){
        super.init({
            name: DataTypes.STRING,
            float: DataTypes.DOUBLE,
            price: DataTypes.DOUBLE
        }, {sequelize, tableName:'products'});
    }
    static associate(models){
        this.belongsTo(models.SubCategory, { foreignKey: 'subcategory_id', as:'subcategory'});
        this.belongsTo(models.Exteriors, { foreignKey: 'exterior_id', as:'exteriors'});
        this.belongsTo(models.Types, { foreignKey: 'type_id', as:'types'})
    }
}

module.exports =  Products;

功能:

async getAllProduct(req,res){
    try {
        const products = await Products.findAll({});
        if(result){return res.status(200).json({result})}
        else{return res.status(400).json({result: 'failed to get Products'})}
     } catch (error) {
         console.error(error);
     }
}
4

1 回答 1

1

您正在寻找即时加载,这涉及在解析器上使用 include 在一个查询中嵌套关联。Include 还可以使用 where、order 和其他工具来过滤结果。

Products.findAll({
include: [
   {model: models.SubCategory, as: 'subcategory', include: [
     {model: models.Exteriors, as: 'exteriors', include: [/* etc */]
   ]}
  ]
  ]}.then(function(products) {
  console.log(JSON.stringify(products))
于 2019-12-02T00:32:01.620 回答