2015-04-12 2 views
0

я следующие таблицы:Sequelize 1: п объединение

--Cable-- 
|id|name| 

--Cable_Part-- 
|id|fk_cable|data| 

Пример данные:

Cable: 
1 - Cable One 

Cable_Part: 
1 - 1 - Some data 
2 - 1 - More data 
3 - 1 - Even more data 

Я хотел бы получить каждый из этих кабельных частей как массива/объекта в моем запросе. Ive пытался следующие соотношения:

@Model.Cable.belongsToMany @Model.CablePart, 
{ 
    through: 'cable_part' 
    foreignKey: 'cable' 
} 

Im получаю эту ошибку:

Possibly unhandled Error: CablePart (CablePart) is not associated to Cable! 

Кроме того, кажется, что hasMany нежелателен я получаю это сообщение, если я пытаюсь использовать его

Using 2 x hasMany to represent N:M relations has been deprecated. Please use belongsToMany instead 

Я уверен, что эта ассоциация должна быть легкой в ​​использовании, но похоже, что она не работает, что я пытаюсь сделать ,

Запросов я пытаюсь сделать:

that.Database.Model.Cable.all(
    include: 
     [ 
     { 
      model: that.Database.Model.CablePart 
      as: 'CablePart' 
     } 
     ] 

).then (cables)-> 

EDIT: Это 1: п не: м, используя следующее отображение еще выдает ошибку:

@Model.CablePart.belongsTo @Model.Cable, 
{ 
    foreignKey: 'cable' 
} 
@Model.Cable.hasMany @Model.CablePart, 
{ 
    foreignKey: 'cable' 
} 

Ошибка:

Possibly unhandled Error: Include unexpected. Element has to be either a Model, an Association or an object. 

ответ

1

through и belongsToMany предназначены для ассоциаций n: m. through указывает таблицу соединений, поэтому она не нужна в вашем случае.

Ошибка Include unexpected предполагает, что that.Database.Model.CablePart может быть не определено. Кроме того, удалите as часть include - это необходимо, только если вы указали as по ассоциации

+0

'that.Database.Model.CablePart' не является неопределенным. Но, похоже, это «ошибка» с sequelize _maybe_. Кажется, что это ошибка, когда у кабеля нет каких-либо частей кабеля, так как он отлично работает со следующим кодом 'database.Model.Cable.find ( { где: id: 4706 включает: [database.Model.CablePart ] } ) .then (детали) -> консоль.log части'. Я удалил опцию «Как», но это не имело никакого значения. Также попытался добавить'allowNull: true'in mapping без везения. –

+0

Это звучит странно - ошибка о неожиданных включениях бросается до того, как запрос попадает в базу данных, поэтому не имеет значения, есть ли какие-либо связанные объекты или нет. –

+0

кажется, что он исправил себя, просто перезапустив базу данных. Однако я бы не подумал, что это общее решение. –

Смежные вопросы