perak / meteor-joins

Collection joins for Meteor
77 stars 7 forks source link

[Bug] Pass collection name in join function doesn't work #24

Open diavrank opened 4 years ago

diavrank commented 4 years ago

Hi, I tried to use <Collection>.join("CollectionName",....) but it seems that it doesn't work. Only works if I inject the object collection.

Summary:

This works:

TripsPubs.js in server side

import {Trip} from "./Trip";
import {PermissionMiddleware} from "../../middlewares/PermissionMiddleware";
import Permissions from "../../startup/server/Permissions";
import {Vehicle} from "../Vehicle/Vehicle";

const tripsPublication = new PublishEndpoint('trips', function () {
    Trip.join(Vehicle,"idVehicle","vehicle",["brand"]);
    let cursor=Trip.find();
    console.log("trip: ",cursor.fetch());
    return Trip.publishJoinedCursors(cursor,{ reactive: true }, this);
});

tripsPublication.use(new PermissionMiddleware([Permissions.TRIPS.LIST]));

ListTrips.vue in client side

 meteor: {
            $subscribe: {
                trips: []
            },
            trips() {
                Trip.join(Vehicle,"idVehicle","vehicle",["brand"]);
                console.log("Trips: ", Trip.find().fetch());
            }
        }

With collection name doesn't work

TripsPubs.js in server side

import {Trip} from "./Trip";
import {PermissionMiddleware} from "../../middlewares/PermissionMiddleware";
import Permissions from "../../startup/server/Permissions";

const tripsPublication = new PublishEndpoint('trips', function () {
    Trip.join("vehicles","idVehicle","vehicle",["brand"]);
    let cursor=Trip.find();
    console.log("trip: ",cursor.fetch());
    return Trip.publishJoinedCursors(cursor,{ reactive: true }, this);
});

tripsPublication.use(new PermissionMiddleware([Permissions.TRIPS.LIST]));

ListTrips.vue in client side

 meteor: {
            $subscribe: {
                trips: []
            },
            trips() {
                Trip.join("vehicles","idVehicle","vehicle",["brand"]);
                console.log("Trips: ", Trip.find().fetch());
            }
        }

Tested on Meteor 1.10.2 I had to add underscore package using meteor add underscore