Sql 如何使用Sequelize连接到没有关系的表

Sql 如何使用Sequelize连接到没有关系的表,sql,typescript,join,sequelize.js,Sql,Typescript,Join,Sequelize.js,我制作了一个SQL命令行来选择我想要的数据,但是我找不到使用Sequelize的方法 我有两张桌子。一个带有与姓名相关的id,另一个带有长文本。 我想从名称id中选择所有包含名称的文本 此SQL命令正在工作: SELECT texts.id, texts.content FROM text INNER JOIN users AS u ON u.id=38 WHERE LOWER(texts.content) like concat('%',u.name,

我制作了一个SQL命令行来选择我想要的数据,但是我找不到使用Sequelize的方法

我有两张桌子。一个带有与姓名相关的id,另一个带有长文本。 我想从名称id中选择所有包含名称的文本

此SQL命令正在工作:

SELECT 
    texts.id,
    texts.content
FROM
    text
    INNER JOIN users AS u ON u.id=38
WHERE
    LOWER(texts.content) like concat('%',u.name,'%')
当我尝试使用Sequelize时,我有这样的想法:

this.modelTexts.findAll({
包括:[
{
model:this.modelUsers,
其中:{id:38},
}
],
地点:。。。
})
尝试此操作时,出现以下错误消息:

SequelizeAgerLoadingError:用户与文本没有关联

我知道我必须做一些事情,比如:

Users.hasMany(Texts)
但我找不到一个办法

感谢您为这个请求花费了一点时间

您可以使用它,因此您的查询可以是这样的

sequelize.query(`
  SELECT 
    texts.id,
    texts.content
  FROM
    text
  INNER JOIN users AS u ON u.id=38
    WHERE
  LOWER(texts.content) like concat('%',u.name,'%')`
{ type: sequelize.QueryTypes.SELECT});
或者您可以添加关联。因此,在代码中定义模型的地方,添加以下代码

User.hasMany('Text', {foreignKey: 'user_id'});

虽然上面的答案很好,但我认为它可能会破坏使用sequelize的整个目的。您是否尝试过以下方法:

  • 在文本模型定义中:

    Text.associate=models=>{
    Text.belongsTo(models.User)
    }

  • 在用户模型定义中:

    User.associate=models=>{
    User.hasMany(models.Text)
    }


如果你还有麻烦,请告诉我!从长远来看,了解sequelize的工作原理将为您节省很多时间!:)

谢谢你的回答!事实上,这就是我为“让它工作”所做的,但正如另一条评论中所提到的,当使用原始请求时,您不再使用Sequelize:/您可以添加关联,然后,我编辑了我的答案。嗨,艾伦,谢谢您的回复。尝试此操作时,出现以下错误:“column text.user_id不存在”。我真的不知道如何修理它:/请给我一个建议。同时展示你的尝试。