2016-11-16 2 views
1

У меня есть эта схема:Mongoose толкая в массиве во вложенном поддокументе

var UserSchema = new Schema({ 
    profile: { 
    firstName: {type: String, trim: true, required: true }, 
    lastName: {type: String, trim: true, required: true }, 
    city: {type: String} 
    age: {type: Number, min: 13, max: 120}, 
    image: {type: String,trim: true} 
    }, 
    friends:{ 
    accepted:[{ 
     id: {type: mongoose.Schema.Types.ObjectId, ref: 'User'}, 
     dateAccepted: {type: Date, default: Date.now} 
    }] 
    } 
} 

Как я могу передавать данные в friends.accepted с .update методом?

мне удалось только с помощью метода findOne:

User.findOne({ 
    _id: id 
    },function(err,user){ 
    user.friends.accepted.push(newUser._id); 
    user.save(function(err){if(err) return err;}) 
    }); 

ответ

0

Это должно работать:

User.findOneAndUpdate({ 
    _id: id 
}, { 
    $push: { 
    "friends.accepted": { 
     id: newUser._id 
    } 
    } 
}, 
{ 
    new: true 
}, 
function (err, user) { 
    console.log(err, user); 
}); 

Вы также можете использовать User.update, но второй параметр обратного вызова будет результат запрос на обновление: { ok: 1, nModified: 1, n: 1 }

Использование findOneAndUpdate позволяет получить объект пользователя. Передача new: true в опции позволяет вам получить обновленный объект пользователя, тогда как без него вы получите оригинал.

+0

Я нашел ответ, с обновлением, это _id: newUser._id , даже если в моей модели это id –

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