In Meteor how can I publish one server side mongo collection under different names?

后端 未结 3 1730
长发绾君心
长发绾君心 2021-01-03 00:59

I have a server side mongo collection called Profiles.

I need to publish and subscribe to the entire collection of Profiles if user: adminId.

That way the ad

相关标签:
3条回答
  • 2021-01-03 01:34

    I think your issue is more on the MongoDB side than with meteor. Given your case I'd do two collections (Group and Profile).

    Each document in the Group collection would feature an array containing DBRefs to documents in the Profile collection (actually users so I would think about renaming the Profile collection to User as imo that's more intuitive).

    Same for the Profile collection and its documents; each document in the profile collection (representing a user) would have an array field containing DBrefs to groups the user belongs to (documents inside the Group collection).

    0 讨论(0)
  • 2021-01-03 01:36

    I think the problem here is that you only need the one collection: Profiles.

    So if you just remove the offending line

    MyProfile = new Meteor.Collection("myprofile");
    

    Everything should work fine (you'll have both datasets within the Profiles collection).

    0 讨论(0)
  • 2021-01-03 01:45

    I'm not entirely sure of how you're checking for the error or not, but I think you may be running into a gotcha I ran into. When you publish data with the Profiles collection, even though the pub/sub calls use the 'myprofile' name, the data always is always available in the collection that you're returning a cursor for... in this case, the data you publish in the 'myprofile' publication will show up in the 'profiles' collection on the client. The publish call doesn't create a 'myprofile' collection on the client. So if you're trying to find() on the 'myprofile' collection you won't see any data. (Meteor/MongoDB won't complain that the collection doesn't exist because they always will lazily create it when you reference it.)

    0 讨论(0)
提交回复
热议问题