#mongodb #meteor #meteor-autoform
#mongodb #meteor #meteor-autoform
Вопрос:
Основная цель этого кода заключается в том, что когда у нас есть данные в базе данных, они должны извлекаться и отображаться в браузере. Но я не смог его найти.
Проблема заключается в передаче данных на сервер.
После запуска meteor и ввода некоторого значения из консоли браузера я не могу увидеть их обратно в браузере.Но я могу найти их с помощью in console, используя команду «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
});
Комментарии:
1. Привет, Sravan, ваша коллекция должна быть объявлена как на стороне сервера, так и на стороне клиента. Если вы определяете коллекцию в collection.js файл, обязательно сделайте его доступным для клиента и сервера. (например, папка lib)
2. Я хочу показать свою структуру папок. .Meteor -> 3 папки (клиент, Коллекция, сервер). Под клиентом (Main.html ,Main.css,Main.js ). Находящийся в стадии сбора (Tdos.js (Декларация о сборе)). Под сервером (Main.js ).
3. Теперь все работает отлично, спасибо, Ян, что ответил на мой вопрос.
Ответ №1:
На вашем сервере вы определяете коллекцию следующим образом:
Tdos = new Mongo.Collection("tdos");
Это означает, что коллекция в Mongo является todos, и вы можете перечислить содержимое с помощью
db.todos.find()
Вы можете вставить запись в mongo, используя это:
db.todos.insert({label: "My first to do"})
В Meteor, когда вы хотите извлечь или вставить / обновить, вы используете Tdos, например
Tdos.insert(...};
Ваш помощник позволяет данным быть доступными в виде массива в вашем коде. Я думаю, вам нужно изменить это, чтобы быть
todos: function() {
return Tdos.find().fetch();
}
Комментарии:
1. Спасибо, Миккель, за ваш ответ.
2. Я попробовал вышеупомянутое предложение и нашел некоторые результаты, а также внес еще одно изменение. То есть я изменил местоположение объявления коллекции. Я создал новую папку с именем Collection, в которой я поместил объявление отдельно в js-файл. Теперь я могу видеть записи в браузере. Но я не смог найти коллекцию в терминале mongodb. Поскольку имя моей коллекции «tdos». Я пробовал как db.tdos.find() Но он показывает только пустой массив… Теперь, как я могу найти коллекцию в терминале MongoDB?
3. Все работает нормально, Миккель, спасибо, что ответил на мой вопрос.