Reputation: 1764
I'm working a todo app, it has projects and each project has todolists
and todoListsCount
.
When user creates a new todoList I want to increment the project's todoListsCount
, the problem I found is that somehow after creating the first todoList the project's todoListsCount
successfully increment but the new value is 2
I suppose to what I was expecting which is 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()
as you can see in the Project schema default value of todoListsCount
is 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);
Upvotes: 0
Views: 37
Reputation: 3576
I guess you are using both await and callback for same function, can be the culprit. Try:
let project = await Project.findOneAndUpdate(
{_id:projectId},
{ $inc:{ todoListsCount:1 }},
{ new: true}).exec();
Upvotes: 1