2015-07-12 3 views
1

Я пытаюсь получить данные из вложенной коллекции без везения, кроме того, использование точечной нотации из html ничего не работает.Данные рендера Meteor из вложенной, вложенной коллекции

В основном я хочу, чтобы soley извлекал нужные мне данные из вложенной коллекции. Я пытаюсь создать загрузку файла для изображений и аудиофайлов, а затем простой способ использовать файлы. Я использую пакеты cfs: standard-packages и cfs: filesystem.

В приведенном ниже коде показан рабочий пример того, что я не хочу, например, извлечение всего файла и извлечение данных в html. Если бы я мог использовать точечную нотацию в команде монго, как-то было бы идеально. Я также могу согласиться на все, но я предпочел бы получать только нужные мне данные при каждом вызове db. Как вы можете видеть, я передаю id для всего объекта файла здесь. Uploads.find({_id:Session.get('getpic')}); BTW, фактический файл хранится в папке на моем локальном сервере.

Коллекция:

{ 
    "_id" : "DXFkudDGCdvLpPALP", 
    "original" : { 
     "name" : "drink.png", 
     "updatedAt" : ISODate("2015-04-30T07:14:56.000Z"), 
     "size" : 127944, 
     "type" : "image/png" 
    }, 
    "uploadedAt" : ISODate("2015-07-11T21:53:32.526Z"), 
    "copies" : { 
     "uploads" : { 
      "name" : "drink.png", 
      "type" : "image/png", 
      "size" : 127944, 
      "key" : "uploads-DXFkudDGCdvLpPALP-drink.png", 
      "updatedAt" : ISODate("2015-07-11T21:53:32.000Z"), 
      "createdAt" : ISODate("2015-07-11T21:53:32.000Z") 
     } 
    } 
} 

HTML

<template name="renderImages"> 
{{#each showpic}} 
    <img width="300" height="300" src="/projectuploads/{{copies.uploads.key}}"/> 
{{/each}} 

Javascript:

Template.renderImages.helpers({ 
    showpic: function() { 
    return Uploads.find({_id:Session.get('getpic')}); 
    } 
}); 

ответ

0

указать возвращаемые поля в find запроса л ike so

return Uploads.find({_id:Session.get('getpic')}, { fields: {'copies.uploads.key': 1} }); 

но слово на этом. здесь вы запрашиваете minimongo (на клиенте), который находится в браузерах, поэтому он в основном бесплатный. позаботьтесь до publish только те поля для клиента, которые вы на самом деле там хотите.

+0

Спасибо, что ответили. Извините, что я все еще вернул весь файл. Я пробовал это с {{ключ}} слева в html и {fields: {'copy.uploads': 1}}); и {fields: {'copy.uploads.key': 1}}); А также пропустил {{#each}} и использовал {{showpic}} вместо {{key}} с {поля: {'copy.uploads.key': 1}}); Да, это просто рабочий пример, используя публикацию/подписку в реальном приложении. Благодарю. Изменить: также попытался .fetch() и .findOne – From

+0

Вам нужно выполнить итерацию через объект uploads, и это может быть невозможно, другое из html или через _each в js? Может быть, это не очень хорошая идея для выполнения операций внутри db? – From

Смежные вопросы