Подтвердить что ты не робот

Как моделировать связь "один-ко-многим" в продолжении?

Я новичок в Sequelize, и я пытаюсь выяснить, как мне моделировать отношения "один ко многим".

Моя проблема заключается в следующем: один термин, много документов.

var Term = sequelize.define( 'Term', ... );
var Paper = sequelize.define( 'Paper', ... );

Предположим, что у меня есть термин. У каждого термина может быть много документов, и я бы хотел добавить/удалить документы для моего термина. Я также хотел бы получить все документы на этот срок.

var term;
...
term.getPapers( ... );
term.setPapers( ... );
term.addPaper( paper );
term.removePaper( paper );

Теперь предположим, что у меня есть бумага. Я хотел бы получить/установить термин для моей статьи.

var paper;

...

paper.getTerm();
paper.setTerm();

Как это можно добиться, используя sequelize? Я много часов изучал документы, а также искал некоторые клеи в сети, но без каких-либо результатов. Я нахожу такую ​​ассоциацию очень плохо документированной в продолжении (один-на-один и многие-ко-многим намного лучше).

Обновление

Хорошо, через несколько часов я разработал, как это работает:

Term.hasMany( Paper, { as: 'papers' } );
Paper.hasOne( Term );

Теперь мы можем сделать:

term.addPaper( paper );
term.removePaper( paper );

paper.getTerm()
  .success( function( term )
  {
    ...
  });
paper.setTerm( term );

Я привык к Django, и кажется, что Sequelize FAR менее зрелый, как с точки зрения кода, так и с документацией...

4b9b3361

Ответ 1

Сначала вам нужно создать ассоциацию. Вы сделали это правильно:

  Term.hasMany( Paper, { as: 'papers' } );
  Paper.hasOne( Term );

Затем вам нужно синхронизировать эти объявления:

  sequelize.sync();

И теперь сохраняйте данные. Вам нужно сохранить объекты прежде, чем их связать.

  term.create()...
  paper1.create()...
  paper2.create()...

  term.setPapers([paper1, paper2]).success(function() {
     // saved!
  })

Ссылка: http://docs.sequelizejs.com/en/1.7.0/docs/associations/#many-to-many-associations

Ответ 2

это зависит от того, как вы структурировали базу данных, это могло бы подумать.

paper.hasOne(term,{as:"PaperTerm"})