如何确保流星应用中DB中只有一个值



我想一次仅通过单击按钮激活一个文档。为此,我使用一个标志:" 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}

您必须以某种方式使用该文档的_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});
 },

第一件事是您需要获取要激活的文档的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} }
);
},

相关内容

最新更新