允许和拒绝集合中的参数

时间:2014-02-10 22:57:40

标签: meteor

在发现流星书中,deny语句使用如下: https://github.com/DiscoverMeteor/Microscope/commit/chapter8-3

Posts.deny({
  update: function(userId, post, fieldNames) {
  .....
});

我不明白更新功能如何获取UserId,post或甚至字段名,因为编辑表单正在执行以下操作:

var postProperties = {
            url: $(e.target).find('[name=url]').val(),
            title: $(e.target).find('[name=title]').val()
        }

        Posts.update(currentPostId, {$set: postProperties}, function(error) {

2 个答案:

答案 0 :(得分:1)

简短的回答是,流星会为你填写这些值。它了解谁正在对哪个文档进行哪些修改并告诉服务器它。

客户端正在调用Posts.update,它向userId正在尝试更新文档(其内容为post)的服务器发送消息,并且正在更新的字段是fieldNames。然后,服务器可以根据这些输入选择接受更新。

记录在案herehere

答案 1 :(得分:1)

这些参数由Meteor提供。客户端和deny对象中的更新函数签名是不同的。

http://docs.meteor.com/#allow

  

update(userId, doc, fieldNames, modifier)

     
    

用户userId想要     更新文档doc。 (doc是文档的当前版本     来自数据库,没有建议的更新。)返回true以允许     改变。

         

fieldNamesdoc中{顶级)字段的数组     客户想要修改,例如['name', 'score']

         

modifier是客户端想要执行的原始Mongo修饰符;     例如,{$set: {'name.first': "Alice"}, $inc: {score: 1}}

         

仅支持Mongo修饰符($set$push等操作)。     如果用户尝试替换整个文档而不是使用     $ -modifiers,请求将被拒绝而不检查allow     功能