Meteor 示例中仅允许1个RSVP
流星派对示例: 限制每个用户1个RSVP的最有效方法是什么?我只想以某种方式修改RSVP方法,但不确定如何进行 我的一般想法是这样的:Meteor 示例中仅允许1个RSVP,meteor,Meteor,流星派对示例: 限制每个用户1个RSVP的最有效方法是什么?我只想以某种方式修改RSVP方法,但不确定如何进行 我的一般想法是这样的: if(Parties.find({rsvps:{user}}) > 1 ) if (Parties.find({'rsvps.user': this.userId}).count()) return; 任何帮助都将不胜感激 您的想法基本正确:在model.js中为rsvp函数添加一个检查。以下是parties集合的架构: /* Each party
if(Parties.find({rsvps:{user}}) > 1 )
if (Parties.find({'rsvps.user': this.userId}).count()) return;
任何帮助都将不胜感激 您的想法基本正确:在model.js中为rsvp函数添加一个检查。以下是parties集合的架构:
/* 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}}) > 1 )
if (Parties.find({'rsvps.user': this.userId}).count()) return;
这基本上行得通。不过,还有一个次要的竞争条件,即一个用户可以快速连续呼叫rsvp两次,该检查可以通过两次更新,然后他将被rsvp发送两次。有很多方法可以解决这个问题(例如:某种形式的两阶段提交…),但它们更为复杂