自动递增序列字段平均堆栈

Auto-Incrementing Sequence Field Mean Stack

我创建了一个用于维护 ticket_no 的集合,其文档如下所示,

{
  id:"TICKET_ID",
  TICKET_NO:7
}

现在,当我尝试为 ticket_id 查找 OneAndUpdate 时,将 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;
}

函数returnsnull值代替ticket no

您在 ret 中得到的是 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
            }
          });
     );
}