2013-11-27 110 views
2

運行在Ubuntu流星.find()從集合返回[對象的對象]

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> 

我插入db使用mongo:

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

然而,當我運行的網站,它只是返回的翻譯:..

應該有上自動發佈和不安全, 這已成爲不少路障對我來說,學習的框架清除。

回答

6

這是預期的。這是因爲.find()的結果總是一個遊標並且有多個對象。 你必須決定你想要哪一個,或者你想循環每一個。

1)你想用一個結果:

var c = Database.findOne(); 

或2)您想通過每一個迭代:

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

另外一定要使用的{{data}}因爲{{data}}財產,即使有findOne仍然是[Object object]。根據您要使用的屬性,您應該使用類似{{data.title}}的東西。

+0

現在沒有東西顯示:S – Sanctus

+0

想通了,由於某種原因,蒙戈DB實際上並沒有加入到收集:/ – Sanctus

1

如何從html訪問MongoDB中的數據?

首先你需要有存在的全局變量的蒙戈DB實例I:E在任何js文件如下,它必須聲明。 它不是客戶端或服務器代碼的一部分

假設我們在其中一個js文件中創建事件集合。現在

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

,爲了訪問與HTML中的所有對象,我們需要內部客戶端助手功能,在我們的js文件。下面是使用助手: -

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: -

說EVENTLIST收藏已領域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}}