如何在流星内访问客户端上的服务器聚合

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.addedthis.changedthis.removedhttps://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 定义流星开发的运行时

使用 nginx 和流星上传和访问服务器上的图像

流星集合不更新客户端上的订阅

如何在本地机器上的 2 个流星应用程序之间可靠地共享 mongo 数据库?

在服务器上调用 Collection.insert 时,“流星代码必须始终在 Fiber 内运行”

如何防止流星重新连接到服务器