在服务器端,我有以下代码:
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支持。
答案 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) });
});