С Meteor (1.4.2.3) и React у меня есть коллекция Objects
, у которой есть itemId
, который ссылается на коллекцию Items
.
В настоящее время я подписываюсь на коллекцию на стороне клиента с помощью:
export default createContainer(() => {
let objectsSub = Meteor.subscribe('allObjects');
var objects = Objects.find({}, {
transform: function (doc) {
doc.item = Items.findOne({
_id: doc.itemId
});
return doc;
}
}).fetch();
return {
objects: objects,
}
}, App);
Это работает отлично, но я думаю, что более элегантно объединять коллекции на стороне сервера. Однако ни одно из найденных мной решений не работает
Преобразование при определении коллекции
const Objects = new Mongo.Collection('objects',
{
transform: function (doc) {
doc.item = Items.findOne({
_id: doc.itemId
})
}
});
Консоль дает:
Ошибка: преобразование должно возвращать объект
Преобразование при публикации
if (Meteor.isServer) {
Meteor.publish('allObjects', function () {
return Objects.find({}, {
sort: { startedAt: -1 },
transform: function (doc) {
doc.item = Items.findOne({
_id: doc.itemId
});
return doc;
}
});
});
};
TypeError: Невозможно прочитать имя свойства неопределенного
Где name
является свойством Items