我正在尝试使用findOne语句在转换函数中访问集合中的文档。
this.helpers({
posts: function () {
return Posts.find(this.getReactively('filter'), {sort: {createdAt: -1}, transform: function (doc) {
var restaurant = Restaurants.findOne(doc.rest_id);
doc.restaurant = restaurant.name;
doc.neighborhood = restaurant.neighborhood;
return doc;
}});
}
});
问题是对findOne的调用没有返回任何内容(未定义)。同样,使用find.fetch()返回一个空数组。
在排除故障后,我发现在我的代码中的任何地方运行find或findOne,除了直接作为帮助程序(即返回Posts.find()工作正常)不返回任何内容。我已经读过客户端此时可能尚未完成订阅数据,但客户端没有任何内容显示。
运行相同的Restaurants.find或findOne在控制台上正常工作,返回预期的文档。
我是否尝试做角度流星不支持的事情? find函数是否仅在帮助程序的上下文中受支持?
答案 0 :(得分:0)
我认为你在这里缺少的部分是Mongo调用transform
函数(即在Mongo调用中):这不是回调函数。
因此,您需要获取文档,然后为每个获取的文档找到findOne。
this.helpers({
posts: function () {
var my_posts = Posts.find(this.getReactively('filter'), {sort: {createdAt: -1}).fetch();
my_posts.forEach(function (doc) {
var restaurant = Restaurants.findOne(doc.rest_id);
doc.restaurant = restaurant.name;
doc.neighborhood = restaurant.neighborhood;
return doc;
}
});
});