【问题标题】:How can I get columns using sequelize in node.js如何在 node.js 中使用 sequelize 获取列
【发布时间】:2022-02-14 23:34:32
【问题描述】:

我在 node.js 中使用 MySQL 的 sequelize,我想获得与从 (SELECT * from table1, table2 where table1.id = table2.id) 中获得的相同数据

--table1.js--
const Table1= sequelize.define("table1", {id: {type: DataTypes.INTEGER,}, data: {type:DataTypes.STRING(255)});
--table2.js--
const Table2 = sequelize.define("table2", {id: {type: DataTypes.INTEGER,}, storage: {type:DataTypes.STRING(255)});

我尝试使用这样的命令Table1.belongsTo(Table2)并通过

获取数据
   const data = await Table1.findAll({
      attributes: [
        ["data", "data_src"],
      ],
      include: [
        {
          model: Table2,
          on: {
            storage: sequelize.where(
              sequelize.col("Table1.id"),
              "=",
              sequelize.col("Table2.id")
            ),
          },
          attributes: [["storage", "storage_src"]],
        },
      ],
    });

但它失败了。 如何获取格式如下的数据

[
 {
   data: 'some data1',
   storage: 'some storage1',
 },
 {
   data: 'some data2',
   storage: 'some storage2',
 },
]

最好的问候

【问题讨论】:

  • table1 和 table2 是否按 1:1 连接?
  • 是的,就是这样。

标签: node.js express sequelize.js


【解决方案1】:

首先,您需要在模型中定义主键(假设相同的 id 列)。

const Table1= sequelize.define("table1", {
  id: {
    type: DataTypes.INTEGER,
    autoIncrement: true,
    primaryKey: true
  },
  data: {type:DataTypes.STRING(255)}
});
const Table2= sequelize.define("table2", {
  id: {
    type: DataTypes.INTEGER,
    autoIncrement: true,
    primaryKey: true
  },
  storage: {type:DataTypes.STRING(255)}
});

其次,需要修正模型之间的关联:

Table1.belongsTo(Table2, { foreignKey: 'id' })

最后,您可以在查询中将包含模型中的属性包含到主模型的属性中:

 const data = await Table1.findAll({
      attributes: [
        "data",
        [sequelize.col("Table2.storage"), "storage"]
      ],
      include: [
        {
          model: Table2,
          attributes: [],
        },
      ],
    });

【讨论】:

  • 我喜欢 StackOverflow。因为我们有这样一位优雅而迅速的专业人士。谢谢阿纳托利...
猜你喜欢
  • 2022-01-17
  • 2019-05-23
  • 2020-04-07
  • 2020-03-05
  • 2020-02-07
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多