首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3表关于sequelize: lost with relations

3表关于sequelize: lost with relations
EN

Stack Overflow用户
提问于 2014-02-21 23:42:07
回答 4查看 755关注 0票数 0

我附上了表结构:

我构造了SQL

这是我的sql:

选择criticites.id,criticites.criticite,criticites.etat,从public.histo_jobs,public.jobs,public.criticites中选择histo_jobs.job_id = jobs.id和criticites.jobid = jobs.id;

我在我的模型之间创建了以下关系:

代码语言:javascript
复制
    Jobs.belongsTo(Criticte ,  {foreignKey : 'jobid'} );
    Criticte.hasMany(Jobs);

    HistoJobs.belongsTo(Jobs, {foreignKey : 'job_id'});
    Jobs.hasMany(HistoJobs);

包含({Criticte.find:{模型:组织作业},{模型:作业},{模型: HistoJobs},}).complete(function(err,resultFound){...

我得到了错误:错误: histo_job没有关联到criticite!。

有没有人能帮我一下?

非常感谢

EN

回答 4

Stack Overflow用户

发布于 2014-02-24 21:39:40

对于您当前的设置,我建议您使用嵌套的急切加载。正如@dan-rocha已经提到的,你只能急切地加载直接关联的模型,这就是为什么你会得到关于histo_jobs没有关联到criticte的错误。没有直接的组织作业归属于/hasOne/hasOne许多批评。

尝试如下所示:

代码语言:javascript
复制
Criticte.find({
    include: [
        { model: Jobs, include: [
            { model: HistoJobs }
        ]}
    ]
})
票数 1
EN

Stack Overflow用户

发布于 2014-02-22 04:39:48

要做到这一点,唯一的方法(据我所知,在Sequelize中不能使用具有连接了另一个关联的关联的对象检索)是创建一个原始查询并将信息放入一个Criticite实例中

代码语言:javascript
复制
var query = "SELECT criticites.id, criticites.criticite, criticites.etat, FROM public.histo_jobs, public.jobs, public.criticites WHERE histo_jobs.job_id = jobs.id AND criticites.jobid = jobs.id";
sequelize
.query(query, Criticites)
.success(function(criticites){
    // Each record will now be mapped to the criticite's DAO-Factory.
    console.log(criticites);
})

我真的不明白你为什么需要这个。在调用Criticite.findAll()时,您将执行以下操作

代码语言:javascript
复制
SELECT * FROM criticites

并将其放入一个Criticite实例中,该实例几乎与调用

代码语言:javascript
复制
SELECT criticites.id, criticites.criticite, criticites.etat, FROM public.histo_jobs,public.jobs, public.criticites WHERE histo_jobs.job_id = jobs.id AND criticites.jobid = jobs.id;

因为您正在执行一个未使用的连接,并选择criticites数据库表上的每一列。

希望它能正常工作:)

票数 0
EN

Stack Overflow用户

发布于 2014-02-25 17:20:24

你写“Criticte.hasMany(Jobs);”。但是,正如我从您的结构中看到的,Criticte只有一个Job。反之亦然,Job有很多Criticte,但是你要写Job.belongsTo(Criticte)。请在清除这些内容后更新您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21938780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档