Поле даты в mongodb не получает обновления при отправке нулевого значения - PullRequest
0 голосов
/ 03 января 2019

Я разработал приложение для среднего стека. Я пытаюсь обновить запись с нулевым значением для поля Дата. Это работает нормально на моем локальном хосте, но не на моем сервере (Aws Ec2). Содержит предыдущее значение перед обновлением.

Я также попробовал 'undefined', но все еще та же проблема.

Визит mongodb установить ноль в обновлении

router.put('/editAssign/:id',(req,res)=>{
    if(!ObjectId.isValid(req.params.id))
        return res.status(400).send('No record with given id : $(req.params.id)');

    var assignment = {
        name: req.body.name,
        code: req.body.code,
        appointmentTime: req.body.appointmentTime,
        scheduledTime:req.body.scheduledTime,
        countEndTime: null
    };

    Assignment.findOneAndUpdate(req.params.id,{$set:assignment},{new:true},(err,doc)=>{
        if(!err)
            res.send(doc);
        else
            console.log('Error in Assignment Update: '+JSON.stringify(err,undefined,2));
    });
});

Я ожидаю, что это будет работать и на моем сервере.

1 Ответ

0 голосов
/ 03 января 2019

Я проделал аналогичную работу с обновлением даты последнего входа пользователя при входе в систему с помощью 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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...