用 Meteor-Angular 参数订阅

Subscribe with parameters with Meteor-Angular

我是 Meteor 的新手,我正在尝试使用 angular-meteor 构建在线报告应用程序,但我在尝试 publishsubscribe 带参数。

lib/collections.js,

TestReport = new Mongo.Collection('test_report');

server/publications.js,

Meteor.publish('testReportDetail', function(reportID) {
    check(reportID, String);

    return TestReport.findOne({_id: reportID});
});

client/test_report_detail.js,

angular.module('myapp').controller('myCtrl', function($scope, $reactive, $stateParams) {
    $reactive(this).attach($scope);

    this.subscribe('testReportDetail', $stateParams.reportID);

    this.helpers({
        reportDetail: function() {
            return TestReport.find({_id: $stateParams.reportID});
        }
    });
});

当客户端浏览器尝试访问报告详细信息时,它在控制台中收到错误

typeError: fn is not a function

有什么想法...?

server/publications.js 中,您应该使用 find() 而不是 findOne()。

Meteor.publish('testReportDetail', function(reportID) {
    check(reportID, String);

    return TestReport.find({_id: reportID});
});

尽管这两个函数的签名相似,但它们 return 非常不同! find() 将 return 一个游标,但 findOne() 实际上 return 一个对象。

这是相关的 documentation for Meteor.publish()

另见 documentation for Collections.find()

我刚刚发布的新 1.3.1 版本中修复了 this.subscribe,请再次查看 - https://github.com/Urigo/angular-meteor/releases