Я проделал аналогичную работу с обновлением даты последнего входа пользователя при входе в систему с помощью Mongoose.
const authUser: any = await new Promise((res, rej) => {
User.findOneAndUpdate({ _id: user[0]._id }, { last_login: date }, {new: true}, (err: any, user:any) => {
if (err) rej(err);
res(user);
});
});
Как вы можете видеть, я завернул его в обещание, чтобы я мог дождатьсяответ на отправку обратно.
Глядя на свой, я бы сказал, что вы не советуете искать, используя findByIdAndUpdate
, а не findOneAndUpdate
, потому что вы передаете только идентификатор.Таким образом, обновление должно выглядеть следующим образом.
Assignment.findByIdAndUpdate(req.params.id, assignment, {new:true}, (err,doc)=>{
if(err) console.log('Error in Assignment Update: '+JSON.stringify(err,undefined,2));
return res.send(doc);
});
Итак, в приведенном выше примере мы передаем идентификатор для findByIdAnyUpdate
и просто передаем назначение.который, если он включает в себя все те же поля, что и схема, он просто обновит последними полями.
РЕДАКТИРОВАТЬ:
Еще один метод, который вы можете попробовать:
Assignment.findByIdAndUpdate(req.params.id, assignment, {new: true}, (err: any, result: any) => {
if(err) console.log('Error in Assignment Update: '+JSON.stringify(err,undefined,2));
// Reasign with new assignment and save
result = assignment;
result.save();
return res.send(result);
});