如何确保Meteor App中的DB只有一个值

时间:2015-05-05 06:57:04

标签: mongodb meteor

我想通过点击按钮一次只激活一个文档。为此我使用了一个标志:“active”。

'click .active': function (){
          var status = nodeDB.findOne({active:true});
          nodeDB.update( {$set:{'active':true}});
         //How to set the other documents as inactive
 },

MongoDB中的元素

Document1: {Keys->value,active->true}
Document2: {Keys ->value,active->false}

2 个答案:

答案 0 :(得分:0)

您必须以某种方式使用文档_id

'click .active': function (){
          var id = this._id;
          nodeDB.update({_id: id}, {$set: {active:true}});
          nodeDB.update({_id: {$ne: id}}, {$set:{'active':false}}, {multi:true});
 },

答案 1 :(得分:0)

首先,您需要获取要激活的文档的ID。我不知道该项目以及它会是什么语法但它应该是这样的:

'click .active': function (documentId){

//Ensure you update only this document
var status = nodeDB.findAndModify({
    query: {active: true, _id: documentId},
    update: {active: true},
    upsert: false,
    new: true
});

//Update all docs other than the one you have
nodeDB.update(
    { query: {id: {$ne: status._id}} },
    { upsert: false },
    { update: {active: false} }
);
},