如何在流星内访问客户端上的服务器聚合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在流星内访问客户端上的服务器聚合相关的知识,希望对你有一定的参考价值。
一点菜鸟问题。我在服务器上使用meteor-native-mongo来访问MongoDB中的聚合函数,但是,我不确定如何返回并在客户端访问结果。在过去,使用collection.find({})函数订阅然后访问客户端上的集合非常简单,但是,我不明白如何使用集合函数来完成它。有人可以解释一下。
Meteor.publish('companies', function(limit) {
db.collection('companies').aggregate([{ $group: { _id: { location: "$google_maps.geometry_location" }, companies: { $addToSet: { name: "$company_name" } }, count: { $sum: 1} } }, { $match: { count: { $gt: 1 } } }]).toArray((err, result) => {
console.log(result);
return result;
});
});
答案
使用来自this.added
的this.changed
,this.removed
,https://docs.meteor.com/api/pubsub.html#Subscription-added ......
Meteor.publish('companies', function(limit) {
var subscription = this;
db.collection('companies').aggregate([{ $group: { _id: { location: "$google_maps.geometry_location" }, companies: { $addToSet: { name: "$company_name" } }, count: { $sum: 1} } }, { $match: { count: { $gt: 1 } } }]).toArray((err, result) => {
subscription.added('companies-aggregate', 'geometry-grouping', {result: result});
});
});
// On the client:
var CompaniesAggregate = new Mongo.Collection('companies-aggregate');
// Inside a reactive context, like a helper
var result = CompaniesAggregate.findOne('geometry-grouping').result;
以上是关于如何在流星内访问客户端上的服务器聚合的主要内容,如果未能解决你的问题,请参考以下文章
如何在 vscode 中为 IntelliSense 定义流星开发的运行时
如何在本地机器上的 2 个流星应用程序之间可靠地共享 mongo 数据库?