2016-10-23 2 views
0

Основная цель этого кода заключается в том, что, когда у нас есть данные в базе данных, он должен извлекаться и отображаться в браузере. Но я не мог найти его.Данные не передаются от клиента к серверу в Meteor

Проблема заключается в передаче данных на Сервер.

После запуска метеорита и ввода некоторого значения с консоли браузера, я не могу их увидеть в браузере. Но я могу найти их в консоли с помощью команды «Tdos.find() .fetch() ", он показывает массивы, которые я ввел, но если я пытаюсь найти в консоли mongodb, мы не смогли его найти. Может кто-нибудь выяснить мою проблему и где я иду не так?

<head> 
    <title>simpletodos</title> 
    </head> 

<body> 

    {{> todoList}} 
</body> 


    <template name="todoList"> 
    <h3>Todos</h3> 
    <ul> 
    {{#each tdos}} 
     {{> todo}} 
    {{/each}} 
</ul> 
    <button class="add-todo">Add todo</button> 

    </template> 
    <template name="todo"> 
     <li> 
     {{label}} 
    </li> 
</template> 

Client/Main.js

if(Meteor.isClient) { 

    Template.todoList.helpers({ 
    todos: function() { 
    return Tdos.find(); 
    } 
    }); 

    if(Meteor.isServer) { 

    } 
    } 

Server/main.js

import { Meteor } from 'meteor/meteor'; 

    Tdos = new Mongo.Collection("tdos"); 

Meteor.startup(() => { 
    // code to run on server at startup 
    }); 
+0

Hi Sravan, ваша коллекция должна быть объявлена ​​как на сервере, так и на стороне клиента. Если вы определяете коллекцию в файле collection.js, обязательно сделайте ее доступной для клиента и сервера. (Например, папка lib) – Yann

+0

Я хочу показать свою структуру папок. .Meteor -> 3 папки (клиент, коллекция, сервер). В разделе Клиент (Main.html, Main.css, Main.js). В коллекции (Tdos.js (Декларация коллекции)). В разделе Сервер (Main.js). –

+0

Теперь он отлично работает, спасибо Янну за ответ на мой вопрос. –

ответ

0

В вашем сервере, вы определяете коллекцию, как это:

Tdos = new Mongo.Collection("tdos"); 

Какие означает, что сбор в Монго - это тодос, и вы можете перечислить содержимое с

db.todos.find() 

Вы можете вставить запись в Монго с помощью этого:

db.todos.insert({label: "My first to do"}) 

В Метеор, когда вы хотите извлечь или вставить/обновление, вы используете Tdos, например

Tdos.insert(...}; 

Ваш помощник позволяет получать данные в виде массива внутри вашего кода. Я думаю, вам нужно изменить это как

+0

Спасибо, Миккель, за ваш ответ. –

+0

Я попробовал вышеуказанное предложение и нашел некоторые результаты, и я сделал еще одно изменение. То есть я изменил местоположение декларации коллекции. Я создал новую папку под названием Collection, в которой я поместил объявление только в файл js. Теперь я вижу записи в браузере. Но я не мог найти коллекцию на терминале mongodb. Поскольку мое имя коллекции - «tdos». Я пытался как db.tdos.find() Но он показывает только пустой массив ... Теперь, как я могу найти коллекцию в терминале MongoDB? –

+0

Он отлично работает Миккель, спасибо, что ответили на мой вопрос. –

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