Mongodb增量if语句(Meteor App)

时间:2014-12-30 15:38:36

标签: javascript mongodb meteor handlebars.js

我似乎无法解决这个看似简单的问题。

下面的代码允许我在帖子对象上添加或减去1的喜欢数量。

我希望能够做到以下几点:

如果postLikes = 0,则停止允许我减少喜欢的次数。

我不希望能够减少过去0的喜欢次数。

这是我的代码:

Template.post.events({
  "click .likeButton": function() {
    // Set the checked property to the opposite of its current value
    Posts.update(this._id, {
      $inc: {
        postLikes: 1
      }
    });
  },
  "click .dislikeButton": function() {

    // Set the checked property to the opposite of its current value

    Posts.update(this._id, {
      $inc: {
        postLikes: -1
      }
    });
  }
});

2 个答案:

答案 0 :(得分:1)

那么,在更新之前有条件呢?

更新 - 没关系。更好的方法是通过查询来实现这一目标!

"click .dislikeButton": function() {
    Posts.update({_id : this._id, postLikes : {$gt : 0}}, {
      $inc: {
        postLikes: -1
      }
    });
}

答案 1 :(得分:0)

如果文档与`update',选择器的第一个参数中的条件匹配,则仅应用 。我看到了接受的答案,但实际上只是使用一个db调用,并让db检查对象标准。像这样:

"click .dislikeButton": function() {
  Posts.update({ _id: this._id, postLikes:{ $gt: 0 }}, { $inc: { postLikes: -1 }});
}

请参阅documentation on Mongo updateMeteor's update