mysql - Sequelize 关联急切导致 connectorDAO 中的错误

标签 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 语句在子对象(任务)上查找关联。如果我添加以下(不必要的):
self.Task.belongsTo(self.Project);

然后我不再触发错误,但未获取子对象。
怕有bug。。。

此外,我正在使用 JSON.stringify,因为 .values 不起作用( undefined )。为什么?

最佳答案

你必须来回连接两个模型,否则你会得到那个错误。

如果未获取任何内容,则 .values 将是未定义的。

关于mysql - Sequelize 关联急切导致 connectorDAO 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13762198/

相关文章:

mysql - 如何更新同一个表中的一条记录与另一条记录相同?

node.js - Node Sequelize 关系挑战

PHP循环进行MYSQL查询

node.js - 如何将当前日期与数据库中的日期进行比较

angularjs - 如何从AngularJS将多对多关系数据发布到一个 Restful api?

node.js - Sequelize 创建关联的对象不起作用

node.js - 为什么我在 Sequelize 查询中 OR 运算符内的条件 WHERE 被转换为 AND?

mysql - 检查上一步状态是否完成并显示下一步是否完成

mysql - 连接两个表,其条件为 "ON"

MySQL - 创建触发器错误 1064( 'DELIMITER ; ' 附近)