在MongoDB / Meteor中使用find()时从对象中选择属性

时间:2014-12-07 15:42:57

标签: mongodb meteor

所以我是Meteor的新手,并且一直在玩它,但是在转移到Mongo时遇到了一些问题。

下面是一个简单的例子,我已经将一些文档插入到我的集合中,但似乎无法正确提取属性。

这是我的代码(我的结果与预期结果相同)

vizart.js

ContentPieces = new Mongo.Collection("content");

if (Meteor.isClient) {

  Template.loggedInDash.helpers({
    content: function () {
      return ContentPieces.find({});
    }

  });

}

vizart.html

<template name="loggedInDash">

    {{#if currentUser}}

        <p>Here is the content you've created</p>
        <ul>
            {{#each content}}
                <li>{{content}}</li>
            {{/each}}
        </ul>

    {{/if}}

</template>

结果(仅在浏览器中粘贴应用)

以下是您创建的内容

  • [object Object]
  • [object Object]
  • [object Object]

预期

正如您所看到的,我并不是100%确定如何提取属性。例如,每个文档都有一个name属性,我想在列表中吐出来。有关如何从name集合中选择content属性的任何帮助或指导?

提前致谢!

2 个答案:

答案 0 :(得分:3)

流星模板语言(spacebars)的灵感来自handlebars。我建议您查看两组文档,但是手柄文档可以帮助您快速掌握基本语法。

在您的示例中,如果ContentPieces中的每个文档都有name,那么您可以将其添加到列表中,如下所示:

<ul>
  {{#each content}}
    <li>{{name}}</li>
  {{/each}}
</ul>

我还建议您查看this post以更好地了解模板数据上下文。

答案 1 :(得分:1)

在您的过程中,您正在显示整个文档,如果您只想显示名称属性,则可以通过

进行显示
 if (Meteor.isClient) {
 Template.loggedInDash.helpers({
 content: function () {
  var name=ContentPieces.find({}).name;
  if(name)
  return name;
   }
   });

您只需传递要显示的字段名称

即可