2016-04-09 4 views
4

Привет Я новичок в MongoDB и программировании. Я пытаюсь удалить конкретный поддокумент в определенном родительском документе, и я использую Mongoose и Node.js. Вот моя модель схемы (user.js файл):Как удалить отдельный поддокумент в mongoose

var userStuff = mongoose.Schema({ 
    itemName: String, 
    itemDesc: String 
}); 

var userSchema = mongoose.Schema({ 
    googleEmail: String, 
    googleName: String, 
    stuff: [userStuff] 
}); 

exports.user = mongoose.model('User', userSchema); 
exports.userStuff = mongoose.model('UserStuff', userStuff); 

Вот как я пытаюсь удалить:

var User = require("../../models/user.js"); 
    ... 
    var userId = req.session.passport.user; 
    var deleteItemId = req.params.id; 
    User.user.findOne({_id: userId}, function(err, user){ 
    if(err){ 
     console.log(err); 
     }else { 
     User.userStuff.remove({ _id: deleteItemId}, function(err, data){ 
      if(err){ 
      console.log(err); 
      }else{ 
      user.save(function(err){ 
       if(err){ 
       console.log(err); 
       } else { 
       res.status(200).send(); 
       } 
      }); 
      } 
     }); 

    } 
    }); 

Можете ли вы показать, как я могу удалить конкретный элемент для конкретного пользователя?

ответ

3

Для удаления определенного элемента для конкретного пользователя, вы можете использовать $pull оператора удалить поддокумент с атомным обновление:

User.user.update(
    { "_id": req.session.passport.user }, 
    { "$pull": { "stuff": { "_id": req.params.id } } }, 
    function(err, numAffected) { 
     if(err){ 
      console.log(err); 
     } else { 
      res.status(200).send(); 
     } 
    } 
); 
Смежные вопросы