node.js - Sequelize, 一对多关联, find with include

标签 node.js sequelize.js model-associations

我无法理解为什么 find 在尝试急切加载关联时会抛出错误。

相关机型:

标签:

module.exports = function(sequelize, DataTypes) {
  var Tag = sequelize.define('Tag',
  {
    tag_name: {type: DataTypes.STRING(30), allowNull: false}
  },  
  {
    associate: function(models) {
      Tag.hasMany(models.Event, {foreignKeyConstraint: true});
      Tag.hasMany(models.Retailer, {foreignKeyConstraint: true});
  }   
}); 
  return Tag;
};

事件标签:
module.exports = function(sequelize, DataTypes) {
  var EventTag = sequelize.define('EventTag',
  {
    cor_name: DataTypes.STRING
  },
  {
    associate: function(models) {
      EventTag.belongsTo(models.Tag, {foreignKeyConstraint: true});
      EventTag.belongsTo(models.Event, {foreignKeyConstraint: true});

    }
  });
  return EventTag;
};

当我进行查找时,我收到一条错误消息,提示“EventTag 未与标签关联!”
这是发现:
db.Tag.find({
  where: ['id = ' + req.param('activity')],
  include: [
    {model: db.EventTag,
     include: [
       {model: db.Event,
        where: [where]}]
    }], 
  attributes: [
    'id',
    'tag_name']})

我在这里缺少什么?我什至尝试了 findAll ,但出现了同样的错误。
我正在使用 sequelize 1.7.10,如果我使用最新版本会有帮助吗?

最佳答案

我发现了这个问题。
我忽略了:

Tag.hasMany(models.Event, {foreignKeyConstraint: true});

应该是:
Tag.hasMany(models.EventTag, {foreignKeyConstraint: true});

关于node.js - Sequelize, 一对多关联, find with include,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27664293/

相关文章:

javascript - Node.js 正在阻塞?

node.js - 退出 Array.map() 循环

mysql - 错误 : connect ECONNREFUSED

mysql - 使用 NodeJS 插入 MySQL 日期

sql - Ruby On Rails 循环关联定义

c++ - 如何在c++中实现关联

node.js - 如何在 google docs api 中自定义页边距?

javascript - Nodejs 持久变量

mysql - 如果记录在另一表中有关联记录,则从一个表中跳过记录

mysql - Rails 对来自两列的值进行排序