node.js - 错误:包括意外。元素必须是模型,关联......与 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 中使用简单连接时,它可以正常工作,所以我知道它不是建模也不是表交叉引用,而是实际的文字语句。
解决方案
推荐阅读
- python - 确定值是否为字符串的最有效方法
- javascript - Cache.match(request) 在服务工作者中返回未定义的 JSONP 请求
- javascript - 使用脚本根据主面板设置左右面板宽度
- python - 如何在Python中打印货币符号和n位十进制数
- ubuntu - 工作人员连接的 Nginx 500 内部错误是不够的
- xml - 将 2 xml 文件与 xslt 合并
- django - 获取布尔字段上 ListView 的查询集
- php - 将 mysqli_num_rows 替换为 fetchColumn PDO >=1
- ios - 为什么浏览器厂商无法在 iOS 上实现 WebPush?
- java - 星 * 分隔符 txt 文件列在存储在数组列表中时返回多次列值