2013-11-27 3 views
2

Запуск на UbuntuМетеор .find() возвращает из коллекции [объект Object]

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.Database.insert({title: 'ShouldWork'}); 
> db.Database.find(); 
{ "_id" : ObjectId("5296403855ee6e1350b35afb"), "title" : "ShouldWork" } 

Но когда я запускаю сайт он просто возвращает объект [объект] ..

Там должно быть autopublish на и небезопасным, Это стало довольно блокпост для меня, чтобы очистить в изучении основ.

ответ

6

Ожидается. Это связано с тем, что результаты .find() всегда являются курсорами и имеют несколько объектов. Вам нужно решить, какой из них вам нужен, или если вы хотите пройти через каждый из них.

1) Вы хотите использовать один результат:

var c = Database.findOne(); 

или 2) Вы хотите перебрать каждого из них:

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

Кроме того, не забудьте использовать свойство из {{data}} потому {{data}}, даже с findOne по-прежнему [Object object]. Вместо этого вы должны использовать что-то вроде {{data.title}} в зависимости от свойства, которое хотите использовать.

+0

Теперь не получает отображается ничего: S – Sanctus

+0

Фигурные его, по какой-то причине Монго дБ фактически не добавляя в коллекцию: / – Sanctus

1

Как получить доступ к данным в Mongo DB из html?

Прежде всего, вам нужно иметь Монго DB экземпляр присутствующую в глобальной переменной I: E он должен быть объявлен в любой .js файл, как показано ниже. Это не часть кода клиента или сервера

Скажем, мы создаем коллекцию событий в одном из файлов js.

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

Теперь для того, чтобы получить доступ ко всем объектам из HTML, мы должны были бы функция Helper внутри клиента в нашем .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 коллекция полей 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}} 

Смежные вопросы