Sequelize association eager导致connectorDAO出错

时间:2012-12-07 11:29:31

标签: mysql sequelize.js

现在使用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语句查找子对象(Task)上的关联。如果我添加(不必要的)以下内容:

self.Task.belongsTo(self.Project);

然后,我没有再触发错误,但未获取子对象。 我担心有一个错误...

此外,我正在使用JSON.stringify,因为.values无效(undefined)。为什么呢?

1 个答案:

答案 0 :(得分:0)

您必须来回连接两个模型,否则您将收到该错误。

如果未提取任何内容,则.values将不确定。