Collection中的Meteor .find()返回[object Object]

时间:2013-11-27 19:04:05

标签: mongodb object collections find meteor

在Ubuntu上运行

Data.js

//Collections
Database = new Meteor.Collection('data');

if (Meteor.isClient) {
  Template.main.data = function () {
    var c = Database.find();
    return c;
  };
}

if (Meteor.isServer) {
  Meteor.startup(function () {
    // code to run on server at startup
  });
}

data.html

<head>
  <title>data</title>
</head>

<body>
  {{> main}}
</body>

<template name="main">
  {{data}}
</template>

我使用mongo:

插入数据库
> db.Database.insert({title: 'ShouldWork'});
> db.Database.find();
{ "_id" : ObjectId("5296403855ee6e1350b35afb"), "title" : "ShouldWork" }

然而,当我运行网站时,它只返回[object Object] ..

应该有自动发布和不安全, 这已经成为我学习框架的障碍。

2 个答案:

答案 0 :(得分:6)

这是预期的。这是因为.find()的结果始终是游标并且具有多个对象。 你必须决定你想要哪一个,或者你想要遍历每一个。

1)您想使用一个结果:

 var c = Database.findOne();

或2)你想迭代每一个:

{{#each data}}
    {{title}}
{{/each}}

此外,请确保使用{{data}}的属性,因为{{data}}即使findOne仍然是[Object object]。您应该使用类似{{data.title}}的内容,具体取决于您要使用的属性。

答案 1 :(得分:1)

如何从html访问Mongo DB中的数据?

首先,您需要将 Mongo数据库实例存在于全局变量 中:i必须在任何.js文件中声明,如下所示。 它不是客户端或服务器代码的一部分

假设我们在其中一个js文件中创建了一个事件集合。

    EventList = new Mongo.Collection('Events');

现在,为了从HTML访问所有对象,我们需要在.js文件 中的客户端内部使用 帮助程序功能。以下是Helper使用的: -

Template.viewEvent.helpers  ({ 
    //NOTE : 'event' is the name of variable from html template
    'event' : function () {
         //returns list of Objects for all Events
         return EventList.find().fetch();
     }
    'users' : function () {
         //returns reference to Document for all users
         return UserList.find().fetch();
     }

});

左侧 在.html上显示内容 : -

Say EventList Collection包含字段Event_Name,Event_Date。下面是html模板代码

<template name="viewEvent">
   <h2>View Event</h2>
   <!-- Iterate on all Objects fetched by the Helper Class-->
   {{#each event}}
      {{Event_Name}} : {{Event_Date}} 
   {{/each}}