Коллекция не определена при попытке создать связь

Я пытаюсь создать очень простые отношения в Meteor, используя aldeed:collection2.

У меня есть две коллекции; Blogs и Posts. Каждое сообщение должно принадлежать одному блогу, поэтому я добавил blog типа Blogs в свою схему Posts.

Blogs = new Mongo.Collection('blogs');
BlogsSchema = new SimpleSchema({
  ...
});
Blogs.attachSchema(BlogsSchema);

Posts = new Mongo.Collection('posts');
PostsSchema = new SimpleSchema({
  blog: {
    type: Blogs
  },
  ...
});
Posts.attachSchema(PostsSchema);

Это должно работать, однако, как только Meteor перезапускается, я получаю следующую ошибку:

ReferenceError: Блоги не определены в collections/Posts.js

Как мне это решить? Если я правильно понимаю, проблема в том, что коллекции находятся в отдельных файлах. Однако, если я помещу свой Blogs.js глубже (Meteor сначала загружает более глубокие файлы), я получаю следующее:

RangeError: превышен максимальный размер стека вызовов


person Gregor Menih    schedule 01.03.2016    source источник
comment
Интересно, полностью ли реализована функция отношения. Документ давно не обновлялся.   -  person Soubhik Mondal    schedule 01.03.2016
comment
Я прочитал эту проблему. По-видимому, файл, на который вы ссылаетесь, является только концепцией, а не фактической реализацией. Единственный способ создать отношения — использовать _id, а затем присоединиться вручную.   -  person Gregor Menih    schedule 01.03.2016
comment
Ручное встраивание документов на стороне клиента кажется оптимальным вариантом, поскольку на стороне сервера активны только курсоры базы данных. См. это.   -  person Soubhik Mondal    schedule 01.03.2016


Ответы (1)


Ознакомьтесь с документацией по отношениям для метеорных коллекций2 по адресу Гитхаб.

Обратите внимание, что в коллекции Colors ссылка на коллекцию Cars заключена в квадратные скобки:

cars: {
  type: [Cars],

Возможно, квадратные скобки являются для вас ключом к решению этого вопроса.

person thoragio    schedule 01.03.2016
comment
Квадратные скобки подразумевают массив блогов, что означает, что у каждого сообщения есть несколько блогов, а это не то, чего я пытаюсь достичь. Я прочитал документацию, и вы можете видеть, что там также указано, что одна машина имеет 0 или 1 цвет, используя type: Colors. - person Gregor Menih; 01.03.2016
comment
Может быть и так, но всегда может быть массив только с одним объектом. Я создал новый проект метеора и добавил в него два файла (blog.js и post.js) с кодом, который вы указали в своем вопросе выше. Единственное изменение, которое я сделал, это добавить квадратные скобки ( type: [Blogs] ) в PostsSchema, и метеор запустился без каких-либо ошибок. - person thoragio; 01.03.2016
comment
Я полагаю, что мог бы изменить отношения и сделать так, чтобы в блогах было несколько сообщений. Однако я решил сохранить блог _id только в сообщениях, а затем присоединиться к отношениям вручную. Я прокомментировал свой вопрос с немного дополнительной информацией. - person Gregor Menih; 01.03.2016