自动递增序列字段平均堆栈
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
}
});
);
}
我创建了一个用于维护 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
}
});
);
}