假设我有两个表: TradeSettingTradePrices 。一个 TradePrice 可以被多个 TradeSettings 使用。在 Express 中,我想列出具有相应 TradePrice 的所有 TradeSettings,因此我对两个表使用 sequelize 的 findAll 并将结果传递给我的 jade View 。

我的问题:

如何为相应的 TradeSetting 输出正确的价格而不为我的 jade View 的每次迭代创建新的选择:

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

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

我的两张表是这样的(简化版):

TradeSettings ( Id , Name, PriceId)

TradePrices ( Id , 价格)

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

最佳答案

通过迭代 TradeSetting 对数据进行预处理,找到每个 TradeSetting 的匹配 TradePrice 并将其作为新属性保存到每个 TradeSetting 中。

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

然后您可以轻松地遍历您的 TradeSettings 并在您的第三个 td 行(来自您的示例)中,您可以使用 #{tradeSetting.TradePrice.Price}
编辑: 你提到你正在使用 sequelize,如果可以在你的数据库中设置外键,那么你也可以使用它。
如果一切设置正确,请尝试

TradeSetting.findAll({ include: [TradePrice])

然后在你的 Jade 模板中
tradeSetting.get('TradePrice').get('Price')

关于mysql - sequelize 输出两张表的关联信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38180875/

10-09 19:50