如何在 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: [],
},
],
});
我在 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: [],
},
],
});