2016-12-29 25 views
0

我有一個與下面的代碼問題我刪除用戶和更新用戶列表到客戶端,所以當我調用API刪除用戶需要一段時間刪除和我更新的userList呈現數據包括已刪除的用戶。如何正確執行刪除?如何從mongodb中刪除文件並更新客戶端?

controller.js

export function destroy(req, res) { 
     console.log(req.params.id); 
     UserAccess.findOne({ 
      attuid: req.params.id 
     }, function(err, user) { 
      if (user) { 
       user.remove(); 
      } 
     }); 
    } 

這將返回用戶列表

export function index(req, res) { 
     UserAccess.findAsync() 
      .then(responseWithResult(res)) 
      .catch(handleError(res)); 
    } 

index.js

router.get('/', controller.index); 
router.delete('/:id', controller.destroy); 

回答

1

調用remove()有一個回調函數使再呼籲usersList

export function destroy(req, res) { 
      console.log(req.params.id); 
      UserAccess.remove({attuid: req.params.id}, function(err,removed) { 
        if(!err && removed){ 
         //call getUsersList function 
        } 

      }); 
    } 
+0

我們如何在myBove代碼中調用'index'的getUserList函數? – hussain

+0

if(!err && removed){index}(req,res); } –

+0

謝謝你解決了我的問題! – hussain

0

試試這個:

UserAccess.findOne({attuid: req.params.id}).remove().exec(); 

mongoose.model.findOne返回一個查詢,它有一個remove function

+0

你怎麼不同的第一個答案我的代碼有問題? – hussain

+0

對不起,我的意思是代替它,檢查更新的答案。 –

0

可以使用findOneAndRemove()方法如下:

export function destroy(req, res) { 
    console.log(req.params.id); 
    UserAccess.findOneAndRemove(
     { attuid: req.params.id },   
     function(err, user) { 
      console.log(user); 
     } 
    ); 
} 

當前實現需要一段時間因爲remove()方法是異步的,並且您沒有爲該函數提供回調。

findOneAndRemove()

UserAccess.findOneAndRemove(conditions, callback) // executes 

會因爲回調立即執行上面簽名通過,否則會返回Query對象。


如果有用戶的列表中刪除,然後上面的方法將不再有效,因爲它不僅能消除單個文檔匹配指定條件。您需要在情況使用$in運營商查詢列表,如下面的例子中,remove()功能:

export function destroy(req, res) {   
    UserAccess.remove(
     { "attuid": { "$in": userList } },   
     function(err, result) { 
      console.log(result); 
     } 
    ); 
} 
+0

如果我們有用戶列表銷燬?它仍然是一個好方法嗎? – hussain

+0

如果你有一個列表,那麼你需要使用'remove()'方法,就像更新後的答案一樣。 – chridam

+0

我只是詢問我們有不同的場景,我們有選擇多個用戶來刪除,如果只有一個用戶刪除'$ in'將在這種情況下工作? – hussain

相關問題