如何在辅助函数之外使用 find/findOne
How to use find/findOne outside of a helper function
我正在尝试使用 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 的调用 return 没有任何内容(未定义)。同样,使用 find.fetch() returns 一个空数组。
故障排除后,我发现 运行 在我的代码中的任何地方查找或 findOne 除了直接作为助手(即 return Posts.find() 工作正常)return没什么。我读到客户端此时可能还没有完成数据订阅,但客户端什么也没有显示。
运行 相同的 Restaurants.find 或 findOne 在控制台上工作正常,return 生成预期的文档。
我是否在尝试做一些 angular-meteor 不支持的事情?查找功能是否仅在助手的上下文中受支持?
我认为您在这里缺少的部分是 transform
函数正在被 Mongo 调用(即在 Mongo 调用中):这不是回调函数.
因此,您需要获取文档,然后为每个获取的文档查找一个。
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;
}
});
});
我正在尝试使用 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 的调用 return 没有任何内容(未定义)。同样,使用 find.fetch() returns 一个空数组。
故障排除后,我发现 运行 在我的代码中的任何地方查找或 findOne 除了直接作为助手(即 return Posts.find() 工作正常)return没什么。我读到客户端此时可能还没有完成数据订阅,但客户端什么也没有显示。
运行 相同的 Restaurants.find 或 findOne 在控制台上工作正常,return 生成预期的文档。
我是否在尝试做一些 angular-meteor 不支持的事情?查找功能是否仅在助手的上下文中受支持?
我认为您在这里缺少的部分是 transform
函数正在被 Mongo 调用(即在 Mongo 调用中):这不是回调函数.
因此,您需要获取文档,然后为每个获取的文档查找一个。
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;
}
});
});