Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sequelize.js sequelize上的3个表:与关系一起丢失_Sequelize.js - Fatal编程技术网

Sequelize.js sequelize上的3个表:与关系一起丢失

Sequelize.js sequelize上的3个表:与关系一起丢失,sequelize.js,Sequelize.js,一、附表结构: 我构建了SQL 这是我的sql: 挑选 I.id, criticites,criticite, 艾特先生, 从…起 public.histo_jobs, 公共就业, 公众评论 哪里 histo_jobs.job_id=jobs.id和 criticites.jobid=jobs.id 我在我的模型之间创建了以下关系: Jobs.belongsTo(Criticte , {foreignKey : 'jobid'} ); Criticte.hasMany(Jobs

一、附表结构:

我构建了SQL

这是我的sql:

挑选 I.id, criticites,criticite, 艾特先生, 从…起 public.histo_jobs, 公共就业, 公众评论 哪里 histo_jobs.job_id=jobs.id和 criticites.jobid=jobs.id

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

    Jobs.belongsTo(Criticte ,  {foreignKey : 'jobid'} );
    Criticte.hasMany(Jobs);

    HistoJobs.belongsTo(Jobs, {foreignKey : 'job_id'});
    Jobs.hasMany(HistoJobs);
批判性发现({ 包括:[{model:historjobs},{model:Jobs},{model:historjobs}], }).complete(函数(err,resultFound){

我得到了一个错误: 错误:历史作业未与criticite!关联

有人能帮我吗

非常感谢

实现这一点的唯一方法(据我所知,Sequelize上不提供与另一个关联关联的对象检索)是创建原始查询,并将信息放入
Criticite
实例中

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()

SELECT * FROM criticites
并将其放入
Criticite
实例中 这几乎和打电话一样

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;
因为您正在执行一个未使用的联接并选择数据库表中的每一列


希望它能起作用:)

对于您当前的设置,我建议使用嵌套的即时加载。正如@dan rocha已经提到的,您只能使用直接关联的即时加载模型,这就是为什么您会遇到历史作业未关联到criticte的错误。没有直接的历史作业属于/hasOne/hasMany criticites

尝试以下方法:

Criticte.find({
    include: [
        { model: Jobs, include: [
            { model: HistoJobs }
        ]}
    ]
})

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

您需要做的就是这样一个嵌套查询

Criticities.findAll({
             include : [{ 
                          model:Jobs ,
                         include: [ HistoJobs]}
                       ]}).then(result=> {   **** your code here **** })