0

流星派对示例:http ://www.meteor.com/examples/parties

限制每个用户 1 个 RSVP 的最有效方法是什么?我想以某种方式修改 RSVP 方法,但不确定如何去做。

我的一般想法是这样的:

if(Parties.find({rsvps:{user}}) > 1 )

任何帮助将不胜感激!

4

1 回答 1

0

您的想法基本上是正确的:在 model.js 中为 rsvp 函数添加一个检查。这是聚会集合的架构:

/*   Each party is represented by a document in the Parties collection:
    owner: user id
    x, y: Number (screen coordinates in the interval [0, 1])
    title, description: String
    public: Boolean
    invited: Array of user id's that are invited (only if !public)
    rsvps: Array of objects like {user: userId, rsvp: "yes"} (or "no"/"maybe")
*/

要检查用户是否已经有 rsvp,您需要向该函数添加一行,如下所示:

if (Parties.find({'rsvps.user': this.userId}).count()) return;

这基本上会奏效。但是,有一个较小的竞争条件,其中一个用户可以快速连续调用 rsvp 两次,此检查可以通过两次更新,然后他将被 rsvp-ed 两次。有一些方法可以解决这个问题(例如:某种形式的两阶段提交......)但他们更多地参与其中。

于 2013-08-11T09:29:05.567 回答