我只是注意到,Meteor.call阻止用户调用集合的插入,更新,删除方法的概念仍然可以从JavaScript控制台调用.
对于客户的例子:
// client
...
Meteor.call('insertProduct', productInfo);
...
Run Code Online (Sandbox Code Playgroud)
这是服务器部分:
// server
Meteor.methods({
insertProduct: function( productInfo ){
Product.insert(...);
}
})
Run Code Online (Sandbox Code Playgroud)
好的,我知道人们不能直接从他们的JavaScript控制台调用Product.insert().
但是如果他们再多尝试一下,他们会发现Meteor.call()客户端的JavaScript来自Developer工具的资源选项卡.
所以现在他们可以尝试Meteor.call从他们的控制台调用,然后尝试猜测应该是什么productInfo属性.
所以我想知道我们怎么能阻止这个最后的活动呢?是否Meteor.call做的工作不够好?或者我错过了一些重要的事情?
我无法弄清楚为什么我位于server / main.js的插入查询代码 导致此 TypeError: callback is not a function错误消息。
以下代码位于:server / main.js
var businessCard = [{PostedDate: moment().add(0, "days").format('MM/DD/YYYY'), sentBy: currentUserId, recipientName: recipientName }];
Run Code Online (Sandbox Code Playgroud)
下一行是插入查询:
Messages.insert({businessCard: businessCard}, {multi:true});
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,没有对Messages集合进行任何插入,在浏览器控制台中也没有得到任何错误消息,但是当我检查终端时,看到以下错误消息:
当我注释掉插入查询时,错误消息消失,使我认为我编写此插入代码的方式有问题。
请帮助我找出问题所在。
期待您的帮助