Mongodb Meteor js聚合和发布
我想与用户和保留集合进行内部联接,其中reservation.userId=users.\u id 在meteor.js中。 我想使用users集合中的userObj发布我的预订集合 所以我用了聚合Mongodb Meteor js聚合和发布,mongodb,cursor,aggregate,publish-subscribe,meteor-blaze,Mongodb,Cursor,Aggregate,Publish Subscribe,Meteor Blaze,我想与用户和保留集合进行内部联接,其中reservation.userId=users.\u id 在meteor.js中。 我想使用users集合中的userObj发布我的预订集合 所以我用了聚合 Meteor.publish("Reservations", function() { var options = { allowDiskUse: true }; var pipeline = [ { $project: { _id: 0,
Meteor.publish("Reservations", function() {
var options = {
allowDiskUse: true
};
var pipeline = [
{
$project: {
_id: 0,
reservations: "$$ROOT"
}
},
{
$lookup: {
localField: "reservations.userId",
from: "users",
foreignField: "_id",
as: "users"
}
},
{
$unwind: {
path: "$users",
preserveNullAndEmptyArrays: false
}
},
{
$project: {
"reservations._id": "$reservations._id",
"reservations.placeId": "$reservations.placeId",
"reservations.userId": "$reservations.userId",
"reservations.date": "$reservations.date",
"users._id": "$users._id",
"users.profile": "$users.profile",
_id: 0
}
}
];
return Reservations.aggregate(pipeline, options);
});
我正在使用meteorhacks的聚合:聚合
但是我有一些这样的错误
I20191023-17:59:56.879(3)? Exception from sub Reservations id Yu9APaNsJKhNhnnGr Error: Publish function can only return a Cursor or an array of Cursors
I20191023-17:59:56.880(3)? at Subscription._publishHandlerResult (packages/ddp-server/livedata_server.js:1132:18)
I20191023-17:59:56.882(3)? at Subscription._runHandler (packages/ddp-server/livedata_server.js:1063:10)
I20191023-17:59:56.882(3)? at Session._startSubscription (packages/ddp-server/livedata_server.js:860:9)
I20191023-17:59:56.884(3)? at Session.sub (packages/ddp-server/livedata_server.js:625:12)
我使用了jcbernack:reactiveaggregate包,但仍然不起作用
我需要一些帮助如何将聚合与发布一起使用?只需将.toArray添加到行的末尾,如下所示:
Reservations.aggregate(pipeline, options).toArray();
另外,最好使用sakulstra:aggregate,因为它是MeteoHacks:aggregate的维护分支
当add.toArray时,我得到以下错误:
I20191025-22:31:31.463(3)? Exception from sub Reservations id Af7Hs2WXjmmcErenc TypeError: Reservations.aggregate(...).toArray is not a function
I20191025-22:31:31.464(3)? at Subscription._handler (server/reservation.js:41:12)
I20191025-22:31:31.464(3)? at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1771:12)
I20191025-22:31:31.464(3)? at DDP._CurrentPublicationInvocation.withValue (packages/ddp-server/livedata_server.js:1046:15)
I20191025-22:31:31.465(3)? at Meteor.EnvironmentVariable.EVp.withValue (packages\meteor.js:1234:12)
I20191025-22:31:31.466(3)? at Subscription._runHandler (packages/ddp-server/livedata_server.js:1044:51)
I20191025-22:31:31.466(3)? at Session._startSubscription (packages/ddp-server/livedata_server.js:860:9)
I20191025-22:31:31.466(3)? at Session.sub (packages/ddp-server/livedata_server.js:625:12)
I20191025-22:31:31.467(3)? at packages/ddp-server/livedata_server.js:559:43
但我试过:
Reservations.aggregate(pipeline, options).forEach(function(doc) {
console.log(doc);
});
我得到了结果,但仍然无法返回此结果