我是角流星應用程序開發的新手,我努力從客戶端對數據庫進行更改。我已經成功完成了大部分angular-meteor tutorial,但現在我試圖啓動一個新項目並調整教程中的概念,我遇到了問題。角流星中客戶端數據庫操作的問題
問題。 用戶填寫表單,當他們點擊「添加」時,表單應該將數據保存到數據庫中。在同一頁面上,我列出了一個顯示所有數據庫條目的列表(典型的「html元素中的元素」循環)。然而,當我填寫表格後,點擊「添加」,新條目將被添加到列表中,然後消失。當我點擊一個「全部刪除」按鈕時,會發生同樣的情況,一切都會消失一段時間然後恢復。持續存在的數據是添加/刪除之前數據庫中的任何數據。
嘗試進行故障排除。我可以用「meteor mongo」訪問這個集合,並且這個集合中保存的值。我可以從命令行添加或刪除它(編輯:和更改反映在客戶端)。在客戶端提交的條目不是添加到數據庫。我使用服務器端啓動功能啓動了數據庫,條件爲if (Videos.find().count() === 0)
。我認爲也許數據庫每次都只是重新初始化自己,但當初始化代碼被註釋掉時,行爲仍然存在。添加自動發佈項目並不能解決問題。編輯: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