如何在不遍历所有现有产品的情况下向用户添加产品?

时间:2019-04-08 02:17:23

标签: node.js sequelize.js

因此,我正在寻求有关如何完成某事的一些建议,因为我当前的实现方式并没有削减它,而且绝对无法扩展。标题有点模糊,所以我会详细说明。

我正在编码一个在线商店,该商店允许用户购买软件(具体来说是Mac)的订阅。用户能够以较低的价格购买“捆绑包”,它们只是一组软件。

问题是,例如,用户购买了一个名为“ Software Group”的捆绑软件,其中包含5种不同的软件,然后1周后,我决定向其中添加另一个软件,然后我希望该用户可以使用此附加软件无论他们剩余的订阅时间是什么。

我当前的实现涉及遍历订阅,并检查订阅是否包含订阅,是否不添加订阅。显然,这并不是一件好事,因为如果我们随后必须将其应用于1000个或10,000个用户,则过程将变得更长。

{
  const subscriptions = await models.Subscription.findAll({
    where: {
      ...
    },
  });

  // Check if exists and if it doesn't create it.
}

我的新想法是让软件几乎像孩子一样属于实际产品,并且将订阅与产品而不是软件相关联,这样,如果我随后添加新软件,它将立即生效添加到拥有该产品的所有用户。

问题是,如果停机或某个软件出现问题,我希望能够“自动补偿”用户。 E.G用户购买了包含5个软件的捆绑软件,其中1个软件无法正常运行,并且已关闭3天。我希望能够只为这1种特定软件而不是其他4种给用户3天的补偿。但是这很棘手,因为订阅本身是与产品相关联的,而不是与产品相关的软件。

希望有人可以就是否可行提供一些建议,甚至可以为实现这一目标的更好方法提供一些启示。

0 个答案:

没有答案