如何从续集关联模型中获取价值

How can I get value from sequelize associated model?

本文关键字:获取 模型 关联      更新时间:2023-09-26

我仍在尝试将menu_title从关联的菜单模型获取到json。如果我使用以下描述的代码控制台显示错误 ER_BAD_FIELD_ERROR: Unknown column 'Products.MenuId' in 'field list'如果我定义了{foreignKey: 'menu_id'}.我做错了什么?

菜单型号:

module.exports = function(sequelize, Sequelize) {
  var Menu = sequelize.define("Menu", {
      owner_id: Sequelize.INTEGER,
      menu_title: Sequelize.STRING,
  }, {
      classMethods: {
        associate: function(models) {
          Menu.hasMany(models.Product)
        }
      }
  });
  return Menu;
};

产品型号:

module.exports = function(sequelize, Sequelize) {
  var Product = sequelize.define("Product", {
      owner_id: Sequelize.INTEGER,
      menu_id: Sequelize.INTEGER,
      product_title: Sequelize.STRING,
  }, {
      classMethods: {
        associate: function(models) {
          Product.belongsTo(models.Menu, { foreignKey: 'menu_id'})
        }
      }
  });
  return Product;
};

然后在控制器内部:

Menu.find({
    where: { owner_id: req.user.id },
    include: [
        { model: Product }
    ]
}).success(function(match) {
    res.json(match.home);
});

感谢您的任何帮助!

您需要在关系的两边都包含外键

Menu.hasMany(models.Product, { foreignKey: 'menu_id'})

否则,续集假定从关系的菜单端查询时外键称为 menuId