我附上了表结构:
我构造了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;
我在我的模型之间创建了以下关系:
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!。
有没有人能帮我一下?
非常感谢

发布于 2014-02-24 21:39:40
对于您当前的设置,我建议您使用嵌套的急切加载。正如@dan-rocha已经提到的,你只能急切地加载直接关联的模型,这就是为什么你会得到关于histo_jobs没有关联到criticte的错误。没有直接的组织作业归属于/hasOne/hasOne许多批评。
尝试如下所示:
Criticte.find({
include: [
{ model: Jobs, include: [
{ model: HistoJobs }
]}
]
})发布于 2014-02-22 04:39:48
要做到这一点,唯一的方法(据我所知,在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;因为您正在执行一个未使用的连接,并选择criticites数据库表上的每一列。
希望它能正常工作:)
发布于 2014-02-25 17:20:24
你写“Criticte.hasMany(Jobs);”。但是,正如我从您的结构中看到的,Criticte只有一个Job。反之亦然,Job有很多Criticte,但是你要写Job.belongsTo(Criticte)。请在清除这些内容后更新您的问题。
https://stackoverflow.com/questions/21938780
复制相似问题