Javascript 使用Meteor方法但仍会出错
我正在使用以避免在客户端更新数据库,但仍然会出现以下错误: 未捕获错误:不允许。不受信任的代码只能按ID删除文档。[403] 在为accounts ui包配置Facebook和Twitter登录之前,我没有注意到它会影响应用程序。同样,我在客户端执行的唯一数据库操作是findsJavascript 使用Meteor方法但仍会出错,javascript,angularjs,meteor,Javascript,Angularjs,Meteor,我正在使用以避免在客户端更新数据库,但仍然会出现以下错误: 未捕获错误:不允许。不受信任的代码只能按ID删除文档。[403] 在为accounts ui包配置Facebook和Twitter登录之前,我没有注意到它会影响应用程序。同样,我在客户端执行的唯一数据库操作是finds if(Meteor.isClient) { $scope.deleteTask = function(task) { $meteor.call("deleteTask&quo
if(Meteor.isClient) {
$scope.deleteTask = function(task) {
$meteor.call("deleteTask", task._id);
};
}
if(Meteor.isServer) {
Meteor.methods({
deleteTask: function (taskId) {
var task = Tasks.findOne(taskId);
if (task.owner !== Meteor.userId()) {
alert("Only a tasks owner may delete the task.")
throw new Meteor.Error("not-authorized");
}
else {
Tasks.remove(taskId);
}
}
});
}
编辑:我应该提到,即使出现了错误,应用程序在本地主机上仍然可以正常工作,但当我将其部署到meteor的一个测试服务器时,它不工作(并且仍然显示该错误)。您正在客户机上运行代码。您有两种选择可以立即解决问题:
/server
目录下的文件中if(Meteor.isServer){}
块中Posts.update({awesome: false}, {...});
而在客户端上,您只能进行如下更新:
Posts.update(postId, {...});
如果您希望保留并编写客户端存根,您可以这样做,但您需要修改更新,如上面第二个示例所示
建议阅读:。发现它来自一个完全不同的文件中的我的帐户ui配置 你能发布你的方法调用和方法本身吗?我已经在上面添加了一些代码。我已经将所有数据库操作包装在“if(Meteor.isServer){}”中,但仍然得到错误。尝试我的第一个建议,并将其放在
/server
目录下的文件中。您的文件中可能存在其他一些不相关的问题,只是没有正确地对此进行评估。还要确保执行此操作后,客户端上没有剩余的第二个定义。如果仍然出现错误,但错误文本已更改,请指出。我已将所有服务器代码移动到/server
目录下的文件中,但仍然出现相同的错误。尽管出现了该错误,但这些操作仍然可以在localhost上运行,但当我将其部署到meteor的一个测试服务器时,应用程序无法运行。您需要在代码中搜索deleteTask
。在localhost上的web控制台中,您仍然可以在客户端上获取该代码的唯一方法是,如果您有仍然向客户端公开的方法的第二个定义。如果你有一个回购协议,我可以检查,我很高兴有一个快速查看。发现它是从我的帐户界面配置在一个完全不同的文件!