从sequelize中的两个表输出相关信息

时间:2016-07-04 09:12:03

标签: mysql node.js express pug sequelize.js

假设我有两个表:TradeSettingTradePrices。多个TradeSettings可以使用一个TradePrice。在Express中我想列出所有TradeSettings和TradePrice,因此我对两个表使用sequelize的findAll并将结果传递给我的玉视图。

我的问题:

如何在不为我的玉石视图的每次迭代创建新选择的情况下为相应的TradeSetting输出合适的价格:

each tradeSetting in tradeSettings
  td #{tradeSetting.Name}
  td #{tradeSetting.PriceId}
  td // the according price for this tradeSetting

我想过使用类似关联数组的东西,以便我可以用#{TradePrice[tradeSetting.PriceId]}输出它,但我不确定这是否可能以及我需要做什么?

我的两个表看起来像这样(简化):

TradeSettings( Id ,名称, PriceId

TradePrices( Id ,价格)

旁注:我还没有在我的数据库中使用外键,但我可以在那里添加外键并在必要时相应地调整模型。

1 个答案:

答案 0 :(得分:1)

通过遍历TradeSetting来预处理您的数据,为每个TradeSetting找到匹配的TradePrice,并将其作为新属性保存到每个TradeSetting中。

之后,每个TradeSetting都有正确的TradePrice作为属性可以轻松访问(就像您访问Name或PriceId一样)。

然后,您可以轻松地遍历您的TradeSettings并在您的第三个td行中(来自您的示例),您可以使用#{tradeSetting.TradePrice.Price}

编辑:您提到您正在使用续集,如果可以在您的数据库中设置外键,那么您也可以使用它。 如果一切设置正确,请尝试

TradeSetting.findAll({ include: [TradePrice])

然后在您的玉石模板中

tradeSetting.get('TradePrice').get('Price')