如何使用JOIN查询使用sequelize将模型数组添加到节点js中的另一个模型

所以我正在将应用程序从JAVA移动到Nodejs。 其中一个数据库模式分为源和事实。 每个来源可以有多个事实,每个事实都被分配给一个来源。 现在在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 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> 

这里OLAPSourceConfigDto和OLAPFactsDto是POJO,而OLAPSourceConfigDto有一个在其中定义的OLAPFactsDto数组。 现在我得到的结果如下:

 { "result": { "respStat": "OK", "resp": { "src_id": 56, "src_nm": "ALM_SRC2", "factsList": [{ "fact_id": 38, "fact_nm": "DTIME", "fact_val": "dtime", "src_id": 0 }, { "fact_id": 39, "fact_nm": "DUID", "fact_val": "duid", "src_id": 0 }] } } } 

ORM使用JOIN查询并将FACTS中匹配到数组内的所有行映射到源数组中。 我的用户界面也被devise为处理上述响应。

现在在节点JS,我使用续集。 我为Source创build了一个模型,它是一个Facts的模型,用Source.hasMany(facts)创build了两者之间的关联,并运行完全相同的查询。

这里是模型和查询:

 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和创build相同types的映射,我可以在JAVA中获得,而不必更改查询或应用一些后查询格式。

提前致谢。