0

MySQLとsequelize@1.6.0-beta4を使用して、関連するモデルを取得するためのこの新しい機能を使用したいと考えています。だから私はこれを持っています:

self.Project.hasMany(self.Task, {as:'Tasks', foreignKey: 'projectID'});

次に、以下を使用します。

db.models.Project.findAll({where:{id:1}, include : ['Tasks']}).success(function(project){
    console.log("With assoc: " + JSON.stringify(project) );
});

残念ながら、次のエラーが表示されます。

node_modules/sequelize/lib/dialects/mysql/query-generator.js:143
        if (association.connectorDAO) {
                       ^
TypeError: Cannot read property 'connectorDAO' of null

include ステートメントを抑制すると、うまく機能しますが、明らかに関連するタスクが返されません。

デバッグに入ると、興味深いことがわかりました。このincludeステートメントは、子オブジェクト (タスク) の関連付けを探します。(不要な)以下を追加すると:

self.Task.belongsTo(self.Project);

その後、エラーは発生しなくなりましたが、子オブジェクトはフェッチされませんでした。バグがあって怖い…

その上、私は動作していないJSON.stringifyので使用しています.valuesundefined)。なんで?

4

1 に答える 1

0

両方のモデルを前後に接続する必要があります。そうしないと、そのエラーが発生します。

何もフェッチされない場合は、.values未定義になります。

于 2012-12-10T12:58:08.650 に答える