假设我有两个表: TradeSetting
和 TradePrices
。一个 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/