【问题标题】:Accessing belongsToMany associates inside of instance访问实例内部的 belongsToMany 关联
【发布时间】:2019-12-15 16:41:06
【问题描述】:

我正在使用 sequelize 将现有的 rails 应用程序转换为 nodejs 以连接到现有的数据库(使用 ActiveRecord 创建)。这是一个购物应用程序,所以我有一个 Product 类和一个 Cart 类,我想将它们关联在一起。在我现有的应用程序中,我使用第三个类 CartLineItem 将它们关联在一起。

在 Product 类中,我使用以下内容:

classMethods:
    {
      associate: function(models) {
        Cart.belongsToMany(models.Product, { through: models.CartLineItem,
                                           foreignKey: 'cart_id',
                                           otherKey: 'product_id',
                                           as: 'products'});
      }
    }

在产品内部我做相反的事情。我似乎能够在购物车中添加和删除商品,但现在我想添加一个实例方法来返回总价,但我不知道如何访问 Cart 实例中的关联产品合计价格。最好的方法是什么?我希望这样做足够频繁,以至于我不想在每次需要时都在模型之外进行操作。谢谢。

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    classMethods 和 instanceMethods 被移除

    Breaking Changes

      const Model = sequelize.define('Model', {
        ...
      });
    
     // Class Method
     Model.associate = function (models) {
       ...associate the models
     };
    
     // Instance Method
     Model.prototype.someMethod = function () {..}
    

    【讨论】:

    • 好的,我会解决这个问题,为 v4 做好准备(我目前使用的是 3.30.2),但这并不能回答如何从 someMethod() 中访问相关模型。
    • 我想你可以这样访问。 Model.prototype.someMethod = function () { } 中的 sequelize.models.SomeOtherModel 如果您需要访问“this”,请不要使用箭头函数。我希望这会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    相关资源
    最近更新 更多