我想允许用户只投票/投票一次,所以我想检查用户是否已经投票。但问题是我的函数总是说用户已经投票,而MongoDB中没有单个userId投票数组。这是功能:
Template.postItem.events({
'click': function() {
Session.set("selected_post", this._id);
},
'click a.yes': function(event) {
if (Meteor.user()) {
event.preventDefault();
if ($.inArray(Meteor.userId(), Posts.voted)) {
console.log('User already voted.');
} else {
var postId = Session.get('selected_post');
console.log("voting" + Meteor.userId());
Posts.update(postId, {$push: {voted: Meteor.userId()}});
Posts.update(postId, {$inc: {'score' : 1}});
}
}
},
答案 0 :(得分:6)
inArray
是一个非常命名不佳的函数:它返回找到该东西的索引,如果找不到,则返回-1, not (顾名思义)true
如果找到,false
,如果没有。所以你想要
if ($.inArray(Meteor.userId(), Posts.voted) !== -1) {
// ----------------------------------------^^^^^^^