2015-07-13 2 views
0

Единственная ссылка в документации Sequelize, которую я могу найти об этом, - Relations/Associations.Динамический набор/получение меток Sequelize для вычетов

Очевидно, что если у вас есть что-то вроде:

Person.hasOne(Person, {as: 'Father', foreignKey: 'DadId'}) 

, то вы можете сделать что-то вроде:

Person.setFather(); 
Person.getFather(); 

Насколько я понимаю, это набор и получить методы создаются динамически для ассоциаций.

Однако, я пытался что-то похоже, и он не работает:

Person.hasOne(Father, { foreignKey: 'father_id' }); 

var aPerson = Person.build({ 
    name: 'Mike' 
}); 

aPerson.setFather({ id: 1 }); 

я понял, что { id: 1 } бит не может быть правильным, но проблема в том, что я получаю сообщение о том, что функция setFather является undefined.

В основном, мой вопрос: как я могу прикрепить ассоциации к уже созданному экземпляру некоторой модели в Sequelize?

ответ

0

У вас есть конкретная модель для отцов? Ассоциации использует название модели, что означает просто импортировать модель пользователя как Отца не будет работать:

var Person = sequelize.define('person') 

var Father = person; 

Person.hasOne(Father) // adds setPerson 
Person.hasOne(Person, { as: 'father' }) // adds setFather 

Я недавно обновил API документацию для ассоциаций - мы надеемся, это должно быть немного понятнее, которые добавляются функции и какие параметры они принимают http://docs.sequelizejs.com/en/latest/api/associations/has-one/

+0

У меня есть модель «Отец», я просто забыл ее скопировать и вставить. Очевидно, что это всего лишь пример, мой реальный код отличается, а также сложнее. Однако это может вдохновить меня. Я попробую его и прокомментирую здесь, если я все еще не получу его. Благодаря! – cgf

+0

Кроме того, вы не можете передать простой объект JS функции set, либо передать экземпляр secelize ('father.build' /' find'), либо передать первичный ключ напрямую 'setFather (1)' –

+0

Да, это то, что я имел в виду когда я сказал, что 'aPerson.setFather ({id: 1});' может быть неверным. Упоминание 'setFather (1)' очень полезно, спасибо! Я считаю, что документации Sequelize немного не хватает в определенных областях, поэтому трудно сказать, что должно произойти, не глядя на код. Не могу проверить главный вопрос на данный момент, сделаю это позже. Еще раз спасибо! – cgf

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