OMGPOP
OMGPOP

Reputation: 994

Mongoose unable to update my document

I need to batch delete the feedbacks to article, comment or reply entity. Here is my implementation

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)
        })
    })
}

And I got this error message

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

What is the problem with my code?

Upvotes: 1

Views: 81

Answers (1)

robertklep
robertklep

Reputation: 203554

You're treating the status property as both a string (setting it to deleted) and an object (by setting two properties, deletedBy and deletedDate), which doesn't make sense.

Upvotes: 3

Related Questions