2015-09-01 5 views
0

У меня есть следующие в моей родовой схемеУдаление ObjectId объекта в массиве с Mongoose

var ClanScheme = new mongoose.Schema 
({ 
    name: {type: String, unique: true}, 
    members: 
    [ 
     { 
     user: {type: mongoose.Schema.Types.ObjectId, ref:'User', unique: true}, 
     wins: {type: Number, default: 0}, 
     losses: {type: Number, default: 0} 
     } 
    ], 

Как удалить пользователя из клана? Я пробовал несколько методов, это выглядит как наименее код:

clan.members.remove({'user':userObj._id}); 
clan.save(function(err) 

Это, кажется, бежит, но палочки пользователя в документе ..

Clan

{ _id: 55e5e8d017e055495dcc3643, 
    name: 'DBz', 
    __v: 9, 
    rating: 1000, 
    losses: 0, 
    wins: 0, 
    rank: 0, 
    members: 
    [ { user: [Object], 
     _id: 55e5e8d017e055495dcc3644, 
     losses: 0, 
     wins: 0 }, 
    { user: [Object], 
     _id: 55e5eb0f17e055495dcc3645, //<< 55e4ac0340f964d52f8e7fb7 
     losses: 0, 
     wins: 0 } ] } 

Пользователь

{ _id: 55e4ac0340f964d52f8e7fb7, 
    facebookid: '999', 
    name: 'Joe Blogs', 
    __v: 0, 
    lastDevice: { device: 'Desktop', id: 'adsbr2fjui33emk9p6gtnfrulv' }, 
    multiplayer: 
    { clanid: 55e5e8d017e055495dcc3643, 
    powers: [], 
    world_commander: 0, 
    losses: 0, 
    wins: 0, 
    clanname: 'DBz', 
    rating: 1000, 
    rank: 0, 
    username: 'Joe' }, 
    saveDataSeed: 40wq211, 
    saveData: 'yuV2hVJA00zYGm'} 

ответ

1

Используйте функцию фильтра и сохраните.

clan.members = clan.members.filter(function(member){ 
    return String(member.user._id) !== String(userObj._id); 
}); 

clan.markModified('members'); 
clan.save(function(err) 
+0

Это не работает, пользователь все еще придерживается клана. –

+0

Вы получаете сообщение об ошибке? –

+0

Никакой ошибки вообще, она работает и говорит, что это сделано, но это действительно не удаляет. –

Смежные вопросы