Meteor rawCollection()。聚合返回类型错误

时间:2016-02-22 14:20:13

标签: meteor

在服务器端,我有以下代码:

Menus = new Mongo.Collection('menus);

Meteor.startup(function() {
    Menus.rawCollection().aggregate([
        {$project: {_id: 1, name: { "$toLower": "$name" } }}
    ]);
});

它给了我TypeError: object is not a function错误

在路径/home/mateusz/.meteor/packages/npm-mongo/.1.4.39_1.1oqi3la++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/mongodb/connection/base.js:246

我正在使用Meteor@1.2.1,标准的mongo 2.6支持。

1 个答案:

答案 0 :(得分:1)

您可以使用 Meteor.wrapAsync() 方法包装聚合函数,该方法包装异步函数,以便您可以以同步方式调用它,但是您将失去反应性:

wrapAsync = (Meteor.wrapAsync)? Meteor.wrapAsync : Meteor._wrapAsync;
Mongo.Collection.prototype.aggregate = function(pipeline, options) {
    var collection = (this.rawCollection) ? this.rawCollection() : this._getCollection();
    return wrapAsync(collection.aggregate.bind(collection))(pipeline, options);
}

Menus = new Mongo.Collection('menus);
Meteor.startup(function() {
    Menus.aggregate([
        {$project: {_id: 1, name: { "$toLower": "$name" } }}
    ]).forEach(function (doc){ console.log(doc) });
});