Автоинкрементный стек средних значений - PullRequest
0 голосов
/ 14 марта 2020

У меня есть коллекция, созданная для ведения ticket_no, для которой документ выглядит следующим образом:

{
  id:"TICKET_ID",
  TICKET_NO:7
}

Теперь, когда я пытаюсь найтиOneAndUpdate для ticket_id, увеличивая TICKET_NO на 1,

function get(){
     var ret = Sequence.findOneAndUpdate(
            {
                query: { _id: 'TICKET_ID' },
                update: { $inc: { TICKET_NO: 1 } },
                new: true
            }
        );

        console.log(ret.TICKET_NO)
        return ret.TICKET_NO;
}

Функция возвращает значение null вместо ticket no

1 Ответ

0 голосов
/ 14 марта 2020

В ответ вы получаете объект функции findOneAndUpdate, а не фактический документ.

Вам необходимо прослушать обратный вызов или использовать async / await, чтобы значение было там,

Попробуйте один из них,

async function get(){
     var ret = await Sequence.findOneAndUpdate(
          { _id: 'TICKET_ID' },
          { $inc: { TICKET_NO: 1 } },
          { new: true }
     );

     console.log(ret.TICKET_NO) // now the ret is the doc you need
     return ret.TICKET_NO; // prints correctly
}

или

function get(){
     Sequence.findOneAndUpdate(
          { _id: 'TICKET_ID' },
          { $inc: { TICKET_NO: 1 } },
          { new: true },
          function(err, ret) {
            if (err) {
              console.error(err)
            } else {
              console.log(ret.TICKET_NO) //successful callback returns ret
            }
          });
     );
}
...