[英]Calling a method from client to server (Meteor)
客戶端
Users = new Mongo.Collection("user-info");
if (Meteor.isClient) {
var myApp = angular.module('calorie-counter', ['angular-meteor']);
myApp.controller('formCtrl', ['$scope', function ($scope) {
$scope.user = {
item1: 0,
item2: 0
};
$scope.submit = function () {
Meteor.call("submit" ($scope.user));
}
}]);
}
服務器端:
if (Meteor.isServer) {
Meteor.methods({
submit: function (user) {
Users.insert(user);
}
});
}
我想做的是,當用戶單擊客戶端上的“提交”按鈕時,我希望它調用服務器端方法,在該方法中,用戶輸入的信息將保存到集合中。 我將$scope.user
作為參數傳遞(不太確定我是否正確調用了該方法),但我一直收到的錯誤是“提交不是函數”。 最初,我只是直接從該函數中插入$scope.user
,但是我認為一種操作類型可能更適合服務器端? (我不太確定我是在考慮這個權利還是只是在想太多)
您需要在方法名稱后使用,
以傳遞參數
Meteor.call("submit", $scope.user);
// ^^^^^^^ ^^^^^^^^^^^
// Method Parameter
例
對於多個參數,請在參數之間使用逗號分隔符
// sync call
var result = Meteor.call('foo', 1, 2);
另外,為了安全起見,所有數據庫操作都應在服務器端進行。 否則,最終用戶( 黑客 )可以獲得對數據庫的訪問權限,並且可以攻擊您的數據庫。
確保在服務器上移動所有數據庫處理代碼,並刪除名為insecure
的軟件包。 這是允許您從客戶端訪問數據庫的軟件包。
這不是有效的語法:
Meteor.call("submit"($scope.user));
您需要將其作為參數傳遞。 請更改為:
Meteor.call("submit", $scope.user);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.