我需要知道Meteor中的 collection.allow()的技术含义。我曾经研究过流星文档但是没有正确理解。所以请你用以下内容解释下面的术语代码。
什么是文档?
如何检查Posts.allow()是返回true / false?
如何调用以下方法,如insert,update&点击按钮时删除?
如何编写插入,更新和放大的查询使用Meteor JS中的以下方法删除?
如何检查多个人允许插入,更新和更新删除查询?
您能否就上述事情向我提出建议?
Posts = new Meteor.Collection("posts");
Posts.allow({
insert: function (userId, doc) {
// the user must be logged in, and the document must be owned by the user
return (userId && doc.owner === userId);
},
update: function (userId, doc, fields, modifier) {
// can only change your own documents
return doc.owner === userId;
},
remove: function (userId, doc) {
// can only remove your own documents
return doc.owner === userId;
},
fetch: ['owner']
});
答案 0 :(得分:1)
这些方法用于验证客户端请求的插入/更新/删除。如果客户端呼叫Posts.insert(somePost)
。服务器将使用Posts.allow
来验证是否可以实际执行此操作。直接回答您的问题:
what is the doc?
这些方法中的doc
是客户端传入的文档。在上面的示例中,它将是somePost
。
How to check Posts.allow() is return true/false?
Posts.allow()将检查用户是否可以插入帖子,如果可以,则返回true
,如果不能,则返回false
(这是您的责任)。在您的示例中,必须有一个有效的userId,文档的所有者必须是当前登录的用户。由于您的doc
是JSON对象,因此在此示例中必须包含owners
字段。如果您总是返回false,那么任何客户端都无法创建帖子。如果您总是返回true,则接受任何插入帖子的请求。
How to call the below methods like insert,update & remove when ever clicks a button?
你实际上从不直接调用这些方法。当客户端尝试插入/更新/删除帖子时,会为您调用它们。
How to write queries to insert, update & remove using the below methods in Meteor JS?
同样,您实际上从未直接调用过这些内容,但是当您执行Posts.insert(somePost)
时,它会自动尝试针对insert
允许方法进行验证。如果收到true
,则会插入帖子。如果收到false
,则会抛出异常。
How to check more than one person allows to insert,update & remove queries?
不完全确定您的意思,但如果您有两个人登录并且他们都尝试插入帖子,您可以根据方法中的userId
字段唯一地验证它们。
更新
我会详细说明你的评论问题。文档对象上只有一个所有者属性。传入的文档可能看起来像这样(简化):
doc = {
"name":"My Important Document",
"description": "This is a great document.",
"createdOn": 1394043417621,
"owner": b8QsgX3awg7E9DMKs
}
因此doc.owner
会为您提供该文档的所有者ID。然后,您可以将其与传入的userId
进行比较,看看他们是否是同一个人。