Meteor JS中collection.allow的技术指南?

时间:2014-03-05 07:38:02

标签: meteor

我需要知道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']
    });

1 个答案:

答案 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进行比较,看看他们是否是同一个人。