Я пытаюсь опубликовать пользователя, связанного с текущим событием но мне кажется я не до конца понял принцип публикации и подписки между метеором и вуэйсом
Сторона сервера:
import { Meteor } from 'meteor/meteor';
import Events from './collections';
import moment from "moment";
const currentWeek = moment().week();
const currentYear = moment().year();
const currentEvent = Events.findOne({ week: currentWeek, year: currentYear })
Meteor.publish('currentUser', function () {
return Meteor.users.findOne({ _id: currentEvent.user_id } );
});
Сторона клиента :
export default {
meteor: {
$subscribe: {
currentUser: [],
},
currentUser() {
return Events.findOne()
}
}
}
клиент возвращает первого пользователя коллекции, а не того, который ожидается для события, заданного в качестве параметра публикации.
Можете ли вы сказать мне, где я ошибаюсь, у меня много проблем с документированием моих хороших практик
я обновил свой код
Вы проверили currentEvent.user_id?
@ghybs да, я получаю идентификатор текущего события





Здесь две проблемы:
Во-первых, публикация предназначена для возврата курсора (с помощью .find), а не отдельного документа (что делается с помощью .findOne).
Во-вторых, текущий код на сервере использует только моменты запуска/в момент импорта модуля, т.к. код находится в глобальной области видимости и не перевыполняется. Поэтому, если ваш сервер работает дольше недели/года, он не вернет точный набор документов.
Чтобы вернуть все документы, соответствующие запросу, используйте .find. Чтобы всегда получать текущие моменты, вы можете обернуть это внутри функции. В обобщенном виде код может выглядеть так:
import { Meteor } from 'meteor/meteor';
import Events from './collections';
import moment from "moment";
const getCurrentEvent = () => {
const currentWeek = moment().week();
const currentYear = moment().year();
return Events.findOne({ week: currentWeek, year: currentYear });
}
Meteor.publish('currentUser', function () {
const currentEvent = getCurrentEvent()
return Meteor.users.find({ _id: currentEvent.user_id });
});
Дальнейшие чтения:
https://docs.meteor.com/api/pubsub.html#Meteor-публикация
https://guide.meteor.com/data-loading.html
Спасибо за ваш ответ, мне было трудно понять принцип подписки и публикации, но я, наконец, начинаю видеть более ясно. Спасибо за ссылки!
Откуда вы берете
currentWeekиcurrentYear?