【问题标题】:sequelize getAssociation for hasMany relation为hasMany关系续集getAssociation
【发布时间】:2017-03-20 21:16:40
【问题描述】:

BillingParticular 具有 1:m 关系。所以, Billing.hasMany(Particular, {as: 'particulars', foreignKey: 'billing_id'})

现在,我想获取给定帐单的几个细节之一,同时确保帐单首先存在。

GET /api/billings/:billingId/particulars/:particularId

async function getParticular(req, res, next) {

    try {

    let billing;
    let result;

    billing = await Billing.findById(req.params.billingId);

    if(!billing) {
        throw new Error('Billing Not found');
    }

    result = await billing.getParticular(req.params.particularId);
    //Oh, wait, but billing.getParticular is not a function

    if(!result) {
        throw new Error('Particular Not found');
    }

    res.json(result);

    } catch (e) {
        next(e)
    }

}

我应该如何抓住众多细节中的一个?

【问题讨论】:

  • 当您获得您的计费对象时,它应该包含一个详细信息列表。为什么要使用特定 id 发出另一个请求?
  • billing 不包含particulars。不过,他们可能会急切地加载。在 mongodb 我可以做billing.particulars.id(particularId)。我期待类似的事情。

标签: javascript sql node.js sequelize.js


【解决方案1】:

您要查找的方法是getParticulars,它根据传递的optionswhere 属性返回相关模型实例的列表

result = await billing.getParticulars({ where: { id: req.params.particularId } });

result 将是具有id = 1 的详细信息数组,因此可能是单元素数组。

【讨论】:

  • 就是这样 :) 。 let [result] = await billing.getParticulars({ where: { id: req.params.particularId } });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 2017-10-20
  • 1970-01-01
  • 2019-10-01
相关资源
最近更新 更多