在发现流星书中,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) {
答案 0 :(得分:1)
简短的回答是,流星会为你填写这些值。它了解谁正在对哪个文档进行哪些修改并告诉服务器它。
客户端正在调用Posts.update
,它向userId
正在尝试更新文档(其内容为post
)的服务器发送消息,并且正在更新的字段是fieldNames
。然后,服务器可以根据这些输入选择接受更新。
答案 1 :(得分:1)
这些参数由Meteor提供。客户端和deny
对象中的更新函数签名是不同的。
http://docs.meteor.com/#allow:
update(userId, doc, fieldNames, modifier)
:用户
userId
想要 更新文档doc
。 (doc
是文档的当前版本 来自数据库,没有建议的更新。)返回true
以允许 改变。
fieldNames
是doc
中{顶级)字段的数组 客户想要修改,例如['name', 'score']
。
modifier
是客户端想要执行的原始Mongo修饰符; 例如,{$set: {'name.first': "Alice"}, $inc: {score: 1}}
。仅支持Mongo修饰符(
$set
和$push
等操作)。 如果用户尝试替换整个文档而不是使用 $ -modifiers,请求将被拒绝而不检查allow
功能