Java 如何在使用连接查询时使用sequelize将模型数组添加到node js中的另一个模型
因此,我将一个应用程序从JAVA迁移到Nodejs。DB模式分为源模式和事实模式。每个源可以有多个事实,每个事实都分配给一个源。现在在JAVA中运行以下查询时:Java 如何在使用连接查询时使用sequelize将模型数组添加到node js中的另一个模型,java,mysql,node.js,sequelize.js,Java,Mysql,Node.js,Sequelize.js,因此,我将一个应用程序从JAVA迁移到Nodejs。DB模式分为源模式和事实模式。每个源可以有多个事实,每个事实都分配给一个源。现在在JAVA中运行以下查询时: SELECT SRC.SRC_ID, SRC.SRC_NM, FACTS.FACT_ID, FACT_NM, FACT_VAL FROM TDAV_ALM_SRC_REG_M SRC LEFT OUTER JOIN TDAV_SRC_FACTS_M FACTS ON SRC.SRC_ID = FACTS.SRC_ID WHERE
SELECT SRC.SRC_ID, SRC.SRC_NM, FACTS.FACT_ID, FACT_NM, FACT_VAL
FROM TDAV_ALM_SRC_REG_M SRC
LEFT OUTER JOIN TDAV_SRC_FACTS_M FACTS ON SRC.SRC_ID = FACTS.SRC_ID
WHERE SRC.SRC_ID = ?
我使用xml中定义的以下映射规则:
<resultMap id="sourceResult" type="com.sec.davs.olap.dto.OLAPSourceConfigDto">
<result property="src_id" column="src_id"/>
<result property="src_nm" column="src_nm"/>
<collection property="factsList" ofType="com.sec.davs.olap.dto.OLAPFactsDto">
<result property="fact_id" column="fact_id"/>
<result property="fact_nm" column="fact_nm"/>
<result property="fact_val" column="fact_val"/>
</collection>
</resultMap>
ORM使用联接查询并将匹配事实的所有行映射到源中的数组中。我的UI也设计用于处理上述响应
现在在NodeJS中,我使用的是sequelize。我已经为Source创建了一个模型,为Facts创建了一个模型,在两者之间创建了一个与Source.hasMany(Facts)的关联,并运行了完全相同的查询
以下是模型和查询:
const facts=sequelize.define('fact', {
FACT_ID: {
type: Sequelize.INTEGER,
primaryKey: true
},
FACT_NM: {
type: Sequelize.STRING
},
FACT_VAL: {
type: Sequelize.STRING
},
SRC_ID: {
type: Sequelize.INTEGER
}
},{
tableName: 'Facts_Master',
freezeTableName: true,
timestamps: false
});
const sources=sequelize.define('source', {
SRC_ID: {
type: Sequelize.INTEGER,
primaryKey: true
},
SRC_NM: {
type: Sequelize.STRING
}
},{
tableName: 'Source_Master',
freezeTableName: true,
timestamps: false
});
sources.hasMany(facts,{
foreignKey: 'SRC_ID'
})
sources.findAll({
raw: true,
include: [{model: facts}],
where:{
SRC_ID : 56
}
}).then(data => {
var json=JSON.stringify({
result:data
});
console.log("New Data:"+json)
})
这将产生如下结果:
{
"result": [{
"SRC_ID": 56,
"SRC_NM": "ALM_SRC2",
"facts.FACT_ID": 38,
"facts.FACT_NM": "DTIME",
"facts.FACT_VAL": "dtime",
"facts.SRC_ID": 56
}, {
"SRC_ID": 56,
"SRC_NM": "ALM_SRC2",
"facts.FACT_ID": 39,
"facts.FACT_NM": "DUID",
"facts.FACT_VAL": "duid",
"facts.SRC_ID": 56
}]
}
是否可以使用sequelize并创建与JAVA中相同的映射,而无需更改查询或应用一些查询后格式
提前谢谢
{
"result": [{
"SRC_ID": 56,
"SRC_NM": "ALM_SRC2",
"facts.FACT_ID": 38,
"facts.FACT_NM": "DTIME",
"facts.FACT_VAL": "dtime",
"facts.SRC_ID": 56
}, {
"SRC_ID": 56,
"SRC_NM": "ALM_SRC2",
"facts.FACT_ID": 39,
"facts.FACT_NM": "DUID",
"facts.FACT_VAL": "duid",
"facts.SRC_ID": 56
}]
}