流星从嵌入的嵌套集合中渲染数据

时间:2015-07-12 08:44:12

标签: javascript mongodb meteor

我一直试图从嵌套集合中获取数据而没有任何运气,除了使用html中的点符号似乎没什么用。

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

下面的代码显示了我不想要的工作示例,例如获取整个文件对象并检索html中的数据。如果我可以在mongo命令中使用点符号,那将是完美的。我也可以解决_each但我更喜欢在每次db调用时只获取我需要的数据。正如您所看到的,我在这里传递了整个文件对象的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')});
  }
});

1 个答案:

答案 0 :(得分:0)

find查询中指定返回的字段,如此

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

但就此而言。在这里你查询minimongo(在客户端上),这是在browsercache中,所以它基本上是免费的。请注意publish仅向客户提供您真正想要的那些字段。