我是bangin'我在最后几个小时靠在墙上,我无法找到解决问题的办法。在我的风帆模型中,我有2个一对多的关联。 ' A'模特可以有很多B'和' B'模特可以有很多C'。在我的控制器中,当我执行a.find().populate('b') (...)
时,它返回A模型的整个集合,但仅使用一个B填充A模型的每个条目,这与我在数据库中的当前数据集不匹配( MySQL的)。并且不会填充B模型中的C条目。换句话说,我试图实现像嵌套人口这样的东西。
控制器代码出了问题,对吧?我怎样才能做到这一点?
提前谢谢!
修改
Company.js
module.exports = {
identity: 'company',
attributes: {
name: {
type: 'string',
required: true
},
address: {
type: 'string',
required: true
},
zip_code: {
type: 'string',
required: true
},
city: {
type: 'string',
required: true
},
nif: {
type: 'integer',
required: true,
minLength: 9
},
country: {
type: 'string',
required: true
},
phone_number: {
type: 'string',
required: true
},
email: {
type: 'email',
required: true
},
facilities: {
collection: 'facility',
references: 'facility',
on: 'id',
via: 'company'
}
}
};
Facility.js
module.exports = {
identity: 'facility',
attributes: {
company: {
columnName: 'id_company',
model: 'company'
},
warehouses: {
collection: 'warehouse',
references: 'warehouse',
on: 'id',
via: 'facility'
},
name: {
type: 'string',
required: true
},
address: {
type: 'string',
required: true
},
zip_code: {
type: 'string',
required: true
},
city: {
type: 'string',
required: true
},
country: {
type: 'string',
required: true
},
phone_number: {
type: 'string',
},
email: {
type: 'email',
},
longitude: {
type: 'float',
},
latitude: {
type: 'float'
}
}
};
Warehouse.js
module.exports = {
identity: 'warehouse',
attributes: {
facility: {
columnName: 'id_facility',
model: 'facility',
},
name: {
type: 'string',
required: true
},
longitude: {
type: 'float',
},
latitude: {
type: 'float'
}
}
};
MainController的相关代码:
companies: function(req, res) {
company.find().populate('facilities').exec(function(err, comp){
var error = '';
if(err){
error = 'Unable to retrieve the requested information. Try again later and, if the problem persists, contact the platform administrator.';
} else if(!comp[0]) {
error = 'There\'s no company data inserted.';
}
// (...)
});
},
答案 0 :(得分:1)
您应该从模型中移除references
和on
。
关于嵌套人口,正如我在评论中所说,Waterline目前不支持它。您可以检查Waterline2,正如他们所说,它提供了嵌套填充的可能性,但不建议用于生产。
否则你可以看看:Sails.js populate nested associations