簡體   English   中英

從客戶端到服務器(流星)調用方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM