Я новичок в разработке приложений в угловом метеор, и я изо всех сил стараюсь внести изменения в базу данных с клиентской стороны. Я успешно завершил большую часть angular-meteor tutorial, но теперь, когда я пытаюсь запустить новый проект и адаптировать концепции из учебника, у меня возникают проблемы.Проблема с работой базы данных на стороне клиента в угловом метеоре
Проблема. Пользователи заполняют форму, и когда они нажимают «добавить», форма должна сохранять данные в базе данных. На той же странице я включил список, в котором отображаются все записи базы данных (типичный цикл «элемент в элементах» в списке html). Однако, когда я нажимаю «добавить», после заполнения формы, новая запись добавляется в список на долю секунды, а затем исчезает. Такое же поведение возникает, когда я нажимаю кнопку «удалить все», все исчезает на мгновение, а затем восстанавливается. Сохраняемые данные - это все, что было в базе данных, перед добавлением/удалением.
Попытки устранения неполадок. Я могу получить доступ к коллекции с помощью «meteor mongo» и значения, которые сохраняются в коллекции. Я могу добавить в коллекцию или удалить ее из командной строки (EDIT: и изменения отражаются на конце клиента). Записи, представленные на стороне клиента , не добавлены в базу данных. Я инициировал базу данных с помощью функции запуска на стороне сервера с условием if (Videos.find().count() === 0)
. Я думал, что, возможно, база данных просто обновляла себя каждый раз, но поведение сохраняется, когда код инициализации закомментирован. Добавление автоопубликации проекта не решает проблему. EDIT: Google Chrome не имеет никаких ошибок в консоли до или после отправки.
Релевантный код. Я использую this repository в качестве отправной точки.
/client/views/submit/submit.controller.js
angular.module("app").controller("SubmitCtrl", ['$scope', '$meteor',
function($scope, $meteor){
$scope.videos = $meteor.collection(Videos).subscribe('videos');
}
]);
/client/views/submit/submit.ng.html
<form>
<label>URL</label>
<input ng-model="newVideo.linkurl">
<label>Description</label>
<input ng-model="newVideo.description">
<button ng-click="videos.save(newVideo); newVideo='';">Add</button>
</form>
<ul>
<li ng-repeat="video in videos">
{{video.linkurl}}
<p>{{video.description}}</p>
</li>
</ul>
/модель/collections.js Videos = new Mongo.Collection("videos");
/server/publications/videos.js
Meteor.startup(function() {
if (Videos.find().count() === 0) {
var videos = [
{ 'linkurl': 'https://www.youtube.com/watch?v=O7zewtuUM_0',
'description': '1st video'},
{ 'linkurl': 'https://www.youtube.com/watch?v=KSzuiqVjJg4',
'description': '2nd video'},
];
for (var i = 0; i < videos.length; i++)
Videos.insert(videos[i]);
};
});
Meteor.publish("videos", function() {
return Videos.find();
});
Единственный файл я чувствую на самом деле отношение здесь /client/app.routes.js, но это довольно долго, и я изменился очень очень немного в нем (от примерно страницы, чтобы отправить страницу, по существу). Я также не включил контроллер или мнение, ответственные за удаление элементов, поскольку он кажется лишним.
Что касается моих ограниченных знаний, все кажется, что он должен работать; следовательно, я чувствую, что решение, вероятно, смотрит на меня в лицо. У вас есть предложения по дальнейшим действиям по устранению этой проблемы?
Можете ли вы разместить свой код? Это было бы очень полезно. –
Отредактировано оригинальное сообщение. Спасибо, что проверили! Дайте мне знать, если что-нибудь еще вы хотите увидеть. – aliigleed