2015-07-02 62 views
1

如何將對象從一個集合移動到另一個集合?什麼是最簡單和最安全的方法來做到這一點?我試着用:在NodeJs中將對象從一個集合移動到另一個集合的最佳方法

app.post('/doneList/:id',function(req, res){ 
    var id = mongojs.ObjectId(req.params.id); 
    var oneTodo; 
    db.todoList.findOne({_id: id},function(err,docs){ 
     db.doneList.insert(docs,function(err,doc){ 
      res.json(doc); 
     }); 

    }); 
    db.todoList.remove({_id: id}); 
}); 

但它崩潰時,我嘗試它。

回答

2

你一般需要工作「內部」的回調,但.findAndModify()可能有很多清潔這裏還有:

app.post('/doneList/:id',function(req, res){ 
    var id = mongojs.ObjectId(req.params.id); 
    var oneTodo; 
    db.todoList.findAndModify(
     { 
      "query": { "_id": id }, 
      "remove": true 
     }, 
     function(err,doc) { 
      if (doc) { 
       db.doneList.insert(doc,function(err,doc){ 
        // respond moved 
       }); 
      } else { 
       // respond was not found 
     } 
    ); 

這樣的文件是在檢索內容的同時,從集合中「移除」。當然你只有.insert()當一個實際的文件被匹配和「內部」的初始.findAndModify()操作回調。

對數據庫的調用少一個,嵌套層次少一個。

+0

謝謝,那是我正在尋找的東西。 –

1

更新:不知道這個答案。跟Blakes Seven的回答一樣,它更好。

由於您在可以插入回調之前刪除它,因此崩潰。

給這一個鏡頭:

app.post('/doneList/:id',function(req, res){ 
    var id = mongojs.ObjectId(req.params.id); 
    var oneTodo; 
    db.todoList.findOne({_id: id},function(err,docs){ 
     db.doneList.insert(docs,function(err,doc){ 
      res.json(doc); 
      db.todoList.remove({_id: id}); 
     }); 
    }); 
}); 
+0

試過之前,不工作.. –

相關問題