2017-01-16 22 views
0

我想在我的待辦事項列表更新位置節點:從定義`model`

var Todo = mongoose.model('Todo', {   
text : String, 
done : Boolean 
}); 

database模式檢查`boolean`值有兩個elements,我想只有boolean更新 - 完成。

 app.put('/api/todos/:todo_id', function(req, res) { 
     var query = { _id: req.params.todo_id }; 
      Todo.update(query, 
       { done: true 
       }, function(err, todo) { 
        if (err) 
          res.send(err); 
        Todo.find(function(err, todos) { 
          if (err) 
            res.send(err) 
          res.json(todos); 
        }); 
      }); 
    }); 

我想檢查實際值,然後更新。完成是從mongoosemodel所以我不能像這樣檢查嗎?

if (done != true){ 
done: true } 
else { 
done: false } 

是這樣的可能嗎?

+0

如果您只是簡單地顛倒它,爲什麼不「完成:!完成」?你不能在對象初始值設定項的中間猛擊一個'if'。 – tadman

+0

你應該使用這個'Todo.update(query,{$ set:{done:true}},...',檢查完成的屬性有什麼意義?我的意思是如果用戶將待辦事項標記爲完成,保存到數據庫不管它以前的值是什麼 – Molda

+0

完成:!完成 - 不工作:/ 我想檢查這個原因我的任務切換,所以如果我改變主意,我可以切換此任務再次做到這一點 –

回答

1
app.put('/api/todos/:todo_id', function(req, res) { 
    Todo.findById(req.params.todo_id, function(err, todo) { // get todo by Model.findById 
     if (err) return res.send(err); 
     todo.done = !todo.done;        // toggle todo's done field 
     todo.save(function(err) {       // save to database 
      if (err) return res.send(err); 
      res.json(todo);         // return the saved todo 
     }); 
}); 
+0

這種情況下,我需要刷新頁面的每一個變化,看看效果:p –

+0

爲什麼不更新? –

+0

你必須從'res.json(todo);'前端接收數據並自己更新你的待辦事項列表,因爲你使用' res.json' –