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