【发布时间】:2016-04-21 23:08:56
【问题描述】:
我有一个应用程序,其中有 5 个集合:一个用于书籍,一个用于类型(书籍,如幻想、科幻......),一个用于语言,一个用于订阅(包括 type_id、lang_id 和user_id) 和最后一个如果 Meteor.users。
我创建了这个辅助函数来检索适合每个用户订阅的书籍(我正在使用 angular-meteor)
$scope.helpers({
userBooks:function(){
var subBooks=[];
var books;
var user_id=Meteor.userId();
Subscribtions.find({user_id:user_id}).forEach(function(sub){
books=Books.find({type_id:sub.type_id,lang_id:sub.lang_id}).fetch();
for(var i=0;i<books.length;i++){
subBooks.push(books[i]);
}
});
return subBooks;
}
})
假设添加了新书或新订阅,或者另一个用户记录了它,子书数据会更新吗?它被认为是响应式的(因为它包含响应式数据)吗?
【问题讨论】:
-
你让事情变得非常复杂:你可以简单地将光标返回 Books.find (即只是
return Book.find(...);到你的模板。一旦你获取,你就会得到数据。光标是反应性的,但是一旦获取的数据不是。 -
即使我在 Subscribtion.find(...).forEach() 中进行了返回,它会起作用吗?
-
如果您从 forEach 内部返回,不会工作,因为您只会返回父范围。
标签: angularjs meteor angular-meteor