2016-03-01 64 views
0

我想在流星使用aldeed:collection2創建一個非常基本的關係。收集undefined當試圖建立關係

我有兩個集合; BlogsPosts。每篇文章都應該屬於一個博客,因此我已將類型的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); 

這應該工作,但是,只要重新啓動流星,我得到以下錯誤:

ReferenceError: Blogs is not defined at collections/Posts.js

如何解決這個問題?如果我理解正確,那麼這些集合存在一個問題,它們位於單獨的文件中。但是,如果我把我的Blogs.js更深(流星負載更深的文件第一次),我得到這個:

RangeError: Maximum call stack size exceeded

+0

我不知道[關係](https://github.com/aldeed/meteor-collection2/blob/master/RELATIONSHIPS.md)是一個完全實現的功能。該文檔很久沒有更新。 –

+0

我一直在閱讀[本期](https://github.com/aldeed/meteor-collection2/issues/246)。顯然,你鏈接的文件只是一個概念,而不是實際的實現。創建關係的唯一方法是使用'_id',然後手動加入。 – ItsGreg

+1

在客戶端手動嵌入文檔似乎是首選選項,因爲只有數據庫遊標在服務器端響應。參考[this](https://www.discovermeteor.com/blog/reactive-joins-in-meteor/)。 –

回答

0

看一看在GitHub的流星collections2上Relationships的文檔。

注意如何在顏色集合到汽車集合引用方括號括起來:

cars: { 
    type: [Cars], 

也許在方括號的關鍵是解決這一問題爲您服務。

+1

方括號意味着一系列博客,這意味着每篇博文都有多個博客,這不是我想要實現的。我已經閱讀了文檔,你可以看到它也指出一輛車有0或1種顏色,使用'type:Colors'。 – ItsGreg

+0

也許是這樣,但總是可以有一個只有一個對象的數組。我建立了一個新的流星項目,並用上面問題中的代碼添加了兩個文件(blog.js和post.js)。我做的唯一更改是向PostsSchema添加方括號('type:[Blogs]'),並且Meteor啓動時沒有任何錯誤。 – thoragio

+0

我想我可以改變周圍的關係,並有博客有多個職位。不過,我決定只在帖子中存儲博客'_id',然後手動加入關係。我用更多的信息評論了我的問題。 – ItsGreg