node.js - mongoose Schema $inc 运算符的奇怪行为
问题描述
我正在开发一个待办事项应用程序,它有项目,每个项目都有todolists
和todoListsCount
. 当用户创建一个新的 todoList 我想增加项目todoListsCount
时,我发现的问题是,在创建第一个 todoList 之后,项目todoListsCount
成功地增加了,但新值是2
我想我所期望的2
:
let project= null
await Project.findOneAndUpdate(
{_id:projectId},
{ $inc:{ todoListsCount:1 }},
{ new: true},
(err, doc) => {
if (err)console.log("Something wrong when updating data!");
project =doc
}
);
const todoList = new TodoList({
title,
owner,
projectId,
orderInProject : project.todoListsCount,
created_at : new Date(),
progress : 0,
done_at : new Date(),
todos : [],
done : false,
})
await todoList.save()
正如您在项目架构中看到的默认值todoListsCount
是0
import mongoose from 'mongoose'
const Schema = mongoose.Schema;
const ProjectSchema = new Schema(
{
/..rest of fields
todosCount : {
type : Number ,
required :false ,
default: 0
},
todoListsCount : {
type : Number ,
required :false ,
default: 0
},
}
)
export const Project = mongoose.model('Project', ProjectSchema);
解决方案
我猜你正在为同一个函数使用等待和回调,这可能是罪魁祸首。尝试:
let project = await Project.findOneAndUpdate(
{_id:projectId},
{ $inc:{ todoListsCount:1 }},
{ new: true}).exec();
推荐阅读
- java - 有什么方法可以根据我们的输入链接到该网站?
- laravel - 创建用户时,给role_id分配UUID
- bash - Docker 文件没有 /bin/bash 目录
- python-3.x - 同时调度或运行线程
- xlwings - xlwings UDF:返回多个输出
- angular - 如何阻止来自 AWS Beanstalk 应用程序(Angular)的 Web 抓取或爬取 Web 内容(图像)?
- javascript - chrome extasnsion 获取本地 blob
- java - 如何在没有springboot的情况下使用.jar打包在vanilla java项目中加载`application.properties`
- tinymce - tinymce在包含时被删除
- python - 如何根据多列对数据进行分组并构造新列 - Pyspark