【发布时间】:2016-01-25 10:23:50
【问题描述】:
我正在尝试在转换函数中使用 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 时,除了直接作为帮助程序(即 return Posts.find() 工作正常)之外,什么也没有返回。我了解到客户端此时可能尚未完成对数据的订阅,但客户端上没有任何显示。
在控制台上运行相同的 Restaurants.find 或 findOne 可以正常工作,返回预期的文档。
我是否正在尝试做一些 angular-meteor 不支持的事情?是否仅在助手的上下文中支持查找功能?
【问题讨论】:
-
MongoDB 是一个基于文档的数据库。在这样的数据库中,您希望在
Posts集合中直接定义restaurant和neighborhood属性。 -
“没有任何东西出现在客户端” 或 “在控制台上运行相同的 Restaurants.find 或 findOne 工作正常”.. ?如果第一个是真的,那么你没有发布数据。如果后者为真,那么您正试图在它准备好之前访问这些数据。
标签: angularjs meteor angular-meteor