2015-07-21 121 views
2

我需要批量刪除feedback s到article,commentreply實體。這是我實現貓鼬無法更新我的文檔

exports.batchDeleteFeedback = function(req, res, next) { 
    var articleId = req.body.articleId 
    var commentId = req.body.commentId 
    var replyId = req.body.replyId 

    var Target, targetId, field 
    if (articleId) { 
     Target = Article 
     targetId = articleId 
     field = 'article' 
    } 
    else if (commentId) { 
     Target = Comment 
     targetId = commentId 
     field = 'comment' 
    } 
    else if (replyId) { 
     Target = Reply 
     targetId = replyId 
     field = 'reply' 
    } 


    var criteria = {} 
    criteria['target.' + field] = targetId 

    Feedback.update(criteria, {$set: { 
     'status': 'deleted' 
     ,'status.deletedBy': req.user 
     ,'status.deletedDate': new Date 
    }}, {multi: true}, function(err) { 
     if (err) 
      return next(err) 

     Target.findById(targetId).exec(function(err, target) { 
      if (err) 
       return next(err) 

      var json = target.toJSON() 
      json.success = 'success batch delete feedbacks' 
      return res.json(json) 
     }) 
    }) 
} 

而且我得到這個錯誤消息

cannot use the part (status of status.deletedBy) to traverse the element ({status: "deleted"}) 

什麼是我的代碼的問題?

回答

3

你治療status財產一個字符串(通過設置兩個屬性,deletedBydeletedDate),這沒有任何意義(將其設置爲deleted的對象。

+0

通過一些搜索,我可以看到許多帶'''符號的代碼,比如'status。$。deletedBy'。這是什麼意思? – OMGPOP

+0

@OMGPOP看到[精細的手冊](http://docs.mongodb.org/manual/reference/operator/update/positional/#update-documents-in-anray) – robertklep

+0

啊所以它是mongodb不mongoose。難怪我無法找到它 – OMGPOP