我一直在努力争取最简单的populate()查询工作在我的新sails.js项目上。问题是要填充的字段总是有一个空数组。我对这些例子感到厌倦,所以我不认为我有语法错误,但也许我疲惫的眼睛不让我看。
以下是进行查询的两种模型+方法:
模特部门:
attributes: {
id: {
type: 'integer',
primaryKey: true
},
name: {
type: "string",
required: true
},
shortName: {
type: "string"
},
schoolName: {
model: 'Schools'
},
courses: {
collection: 'Courses',
via: "departmentId"
}
},
模型课程:
attributes: {
id: {
type: "integer",
primaryKey: true
},
name: {
type: "string",
required: true
},
shortName: {
type: "string"
},
departmentId: {
model: "Departments"
}
},
最后,拨打电话的方法:
getDepartmentsBySchool: function(schoolName, callback){
Departments.find({schoolName: schoolName}).populate("courses").exec(function(error, departments){
if(error){
console.log("Departments could not be found");
return callback(error, []);
} else{
console.log(departments.length + " departments found");
return callback(null, departments);
}
});
}
结果:
courses: []
总是
我正在使用MySQL,所以适配器是sails-mysql。我会非常感谢任何类型的指针,因此我不必放弃使用此框架。
编辑:
将迁移更改为"更改"结果如下:
答案 0 :(得分:0)
我测试了你最后提供的代码示例。我没有将shoolName作为对另一个集合的引用,而是将其保留为字符串,因为我想测试部门和课程之间的关联。一切似乎都很好。课程进展顺利。你可能想检查一件事。在使用类型的关联时:
schoolName: {
model: 'Schools'
},
schoolName必须包含学校表中的记录ID。我希望你正确地设置它。
有时它可能是与节点模块sails-mysql相关的问题。您可以尝试重新安装sails-mysql模块
npm uninstall sails-mysql
npm cache clear
npm install sails-mysql
让我知道这是否有效。