Sequelize.js sequelize上的3个表:与关系一起丢失
一、附表结构: 我构建了SQL 这是我的sql: 挑选 I.id, criticites,criticite, 艾特先生, 从…起 public.histo_jobs, 公共就业, 公众评论 哪里 histo_jobs.job_id=jobs.id和 criticites.jobid=jobs.id 我在我的模型之间创建了以下关系: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
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 **** })