用Mongoose更新布尔值

时间:2016-12-14 18:33:21

标签: angularjs mongodb mongoose mean-stack

我创建了一个可以创建待办事项列表的应用程序。我创建时的状态为false。如果对象完成与否,我应该表示的状态。

我的mongoose架构在 server.js

中看起来像这样
// Create mongoose schema
var issueSchema = mongoose.Schema ({
    issue: String,
    date: String,  
    status: Boolean,    
 });    

 // Create mongoose model
Issue = mongoose.model('Issue', issueSchema);

当我在我的index.html上按下我的按钮时使用angular将id发送到server.js文件。

// API PUT ========================
app.put('/issueList/:id', function(req, res){
var id = req.params.id;

Issue.findById(id, function(err, Issue) {
    console.log("Object with ID: " + id); // Correct ID

   // I need code here

 });
});

如果为false,我需要帮助将布尔值更新为true,如果为true,则需要将其更新为false。或者我应该跳过布尔值并使用其他东西吗?

2 个答案:

答案 0 :(得分:2)

您可以通过id找到问题,然后在成功回调中进行更改后将其保存回MongoDB。

Issue.findById(id, function(err, issue) {
    issue.status = !issue.status;
    issue.save(function (err) {
        if(err) {
        console.error('ERROR!');
      }
  });
});

我不确定是否有可能在MongoDB中原子地切换布尔字段。

答案 1 :(得分:0)

首先,我不认为你应该在函数的内部和内部使用相同的变量名。在这种情况下,issue相同,请将其更改为Issue.findById(id, function(err, issue) { console.log("Object with ID: " + id); // Correct ID issue.status = !issue.status; issue.save(function(err,result){...}); }); });

您可以尝试更新。

{{1}}