mysql - 在sequelize中输出两个表的关联信息

标签 mysql node.js express pug sequelize.js

假设我有两个表:TradeSettingTradePrices。一个 TradePrice 可以被多个 TradeSettings 使用。在 Express 中,我想列出所有 TradeSettings 以及相应的 TradePrice,因此我对两个表使用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、名称、PriceId)

交易价格(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/

相关文章:

javascript - Promise 全部完成后设置 React 数组状态

javascript - 通过 Fetch Api 发布请求时 Req.body 未定义

PHP 和 PDO 准备的语句 - 未找到列

vim - Express.js、Node.js Jade vim

node.js - 使用 Passport 本地和 PAM 模块进行身份验证

javascript - 将 JavaScript 与 Node.js 合并

mysql - 如何通过mysql中的select查询选择Distinct列的前四个字母?

mysql - 轻微的mysql插入查询错误

c# - 为什么我的 INSERT 语句会产生重复?

html - pug - 编译后嵌套不正确 - 包含与扩展