私は、新しいsails.jsプロジェクトで最も単純なpopulate()クエリを機能させるために何時間も苦労してきました。問題は、入力するフィールドに常に空の配列があることです。例を詳しく調べたので、構文エラーはないと思いますが、疲れた目で見られない可能性があります。
クエリを作成する2つのモデルとメソッドは次のとおりです。
モデル部門:
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です。このフレームワークの使用をやめる必要がないように、あらゆる種類のポインターをいただければ幸いです。
編集:
移行を「変更」に変更すると、次のようになります。
私はあなたから提供されたコードサンプルを最後にテストしました。shoolNameを別のコレクションへの参照として保持する代わりに、部門とコースの間の関連付けをテストしたかったので、文字列として保持していました。すべてが正常に機能しているようです。コースは完全に埋められていました。あなたは一つのことをチェックしたいかもしれません。タイプの関連付けを使用している場合:
schoolName: {
model: 'Schools'
},
schoolNameには、schoolsテーブルのレコードのIDが含まれている必要があります。正しく設定されていることを願っています。
ノードモジュールsails-mysqlに関連する問題である場合があります。帆を再インストールしてみてください-mysqlモジュール
npm uninstall sails-mysql
npm cache clear
npm install sails-mysql
これが機能するかどうかを教えてください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加