首页 > 解决方案 > 错误:包括意外。元素必须是模型,关联......与 sequelize.literal

问题描述

我试图在我的查询中包含一个 T-SQL 'Stuff()... for XML PATH'。我找不到使用 Sequelize 获得这些结果的方法,所以我尝试使用 sequelize.literal 函数。它给了我错误

包括意外。元素必须是模型、关联或对象。作为 Sequelize 的新手,我找不到任何解决方案(我能理解)。

这是引发错误的代码

userDB.tblSMSSent.belongsTo(userDB.tblSMS, { foreignKey: 'MessageId', targetKey: 'OutgoingMessageId' });
    userDB.tblSMS.hasMany(userDB.tblSMSSent, { sourceKey: 'OutgoingMessageId' });

    let messages = await userDB.tblSMSSent.findAll({
        attributes: [
            ['phone', 'phone'],
            ['date', 'date'],
            [sequelize.fn('substring', sequelize.col('result'), 1, 50), 'result'],
            ['debtor', 'debtor'],
            ['sms', 'OrigBody'],
            ['user', 'user'],
            ['MessageId', 'MessageId']
        ],
        include: [sequelize.literal(`
            (SELECT STUFF((SELECT '^' + MessageBody
                FROM mcaintranet.dbo.tblSMS
                WHERE outgoingMessageId=MessageId
                FOR XML PATH('')) ,1,1,''))
        `), "MessageText"],
        where: {
            user: userName
        },
        logging: false
    })

先感谢您。

在 Sequelize 中使用简单连接时,它可以正常工作,所以我知道它不是建模也不是表交叉引用,而是实际的文字语句。

标签: node.jstsqlsequelize.js

解决方案


推荐阅读