流星派对示例:http ://www.meteor.com/examples/parties
限制每个用户 1 个 RSVP 的最有效方法是什么?我想以某种方式修改 RSVP 方法,但不确定如何去做。
我的一般想法是这样的:
if(Parties.find({rsvps:{user}}) > 1 )
任何帮助将不胜感激!
流星派对示例:http ://www.meteor.com/examples/parties
限制每个用户 1 个 RSVP 的最有效方法是什么?我想以某种方式修改 RSVP 方法,但不确定如何去做。
我的一般想法是这样的:
if(Parties.find({rsvps:{user}}) > 1 )
任何帮助将不胜感激!
您的想法基本上是正确的:在 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 两次。有一些方法可以解决这个问题(例如:某种形式的两阶段提交......)但他们更多地参与其中。