为什么我的$ .inArray()函数在投票系统中不起作用?

时间:2015-03-08 16:31:43

标签: javascript jquery mongodb meteor

我想允许用户只投票/投票一次,所以我想检查用户是否已经投票。但问题是我的函数总是说用户已经投票,而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}});
                }
            }
        }, 

1 个答案:

答案 0 :(得分:6)

inArray是一个非常命名不佳的函数:它返回找到该东西的索引,如果找不到,则返回-1, not (顾名思义)true如果找到,false,如果没有。所以你想要

if ($.inArray(Meteor.userId(), Posts.voted) !== -1) {
// ----------------------------------------^^^^^^^