如何在 node.js 中使用 sequelize 获取列

How can I get columns using sequelize in node.js

我在 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',
 },
]

此致

首先,您需要在模型中定义主键(假设有相同的 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: [],
        },
      ],
    });