2015-07-12 97 views
1

我一直试图从没有任何运气的嵌套集合中获取数据,除了使用HTML中的点符号似乎没有任何工作。流星渲染来自嵌入式嵌套集合的数据

我想要的基本上是从嵌套集合中获取我需要的数据。我试图为图像和音频文件构建文件上传,然后使用这些文件的简单方法。我使用的是cfs:standard-packages和cfs:filesystem软件包。

下面的代码显示了我不想要的东西的一个工作示例,例如获取整个文件对象并检索html中的数据。如果我可以在mongo命令中使用点符号,那么它是完美的。我也可以解决_each,但我更愿意提取每个数据库调用所需的数据。正如你所看到的,我在这里为整个文件对象传递一个id。 Uploads.find({_id:Session.get('getpic')});顺便说一句,实际的文件存储在我的本地服务器上的文件夹中。

收集:

{ 
    "_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查询L时返回的字段ike so

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

但是就此而言。在这里您可以查询浏览器缓存中的minimongo(在客户端),因此它基本上是免费的。请注意0​​只有那些您真正想要的客户的字段。

+0

感谢您的回答。很抱歉,我仍然收到整个文件对象。我已经在{{key}}左边的html和{fields:{'copies.uploads':1}})中尝试了这一点。和{fields:{'copies.uploads.key':1}}); 此外,还使用{{#each}}和{{showpic}}而不是{{key}} {{'copies.uploads.key':1}})。 是的,这只是一个工作示例,在真实应用中使用发布/订阅。谢谢。编辑:也试过.fetch()和.findOne – From

+0

你必须迭代通过上传对象,这可能是不可能的,其他从HTML或通过js中的_each?无论如何,在db中执行操作的性能不是一个好主意? – From