У меня есть приложение nodeJS и база данных mongoDB, и я использую Mongoose для моделирования БД. Одной из функций приложения является сохранение курсов в базе данных и их выборка. Когда я в первый раз вызываю этот API, он всегда выбирает на один документ меньше, чем должен возвращать, но для последующих вызовов он выбирает все соответствующие документы.
- Первый вызов, bulkCreate (курс A) => сохраняет A в базе данных => консольный журнал пустой массив []
- Второй вызов, bulkCreate (курс B) => сохраняет B в базе данных => журналы консоли [A, B]
Я не уверен, что здесь происходит. Я думаю, что это связано с получением результата до того, как он будет заполнен в базе данных, но для этого у меня есть ожидание. Хотя я могу ошибаться. Ниже приведен фрагмент кода.
async bulkCreateCourses(req, res, next) {
try {
const courses = req.body.courses || []
const institutionName = req.body.institutionName
for (let course of courses) {
const newCourse = await Course.create({
name: course.name,
description: course.description,
location: course.location,
credits: course.credits,
})
await Institution.findOneAndUpdate({
name: institutionName
}, {
$push: {
courses: newCourse
}
}, {
new: true
})
}
}
const selectedInstitution = await Institution
.findOne({
name: institutionName
}) .populate({
path: 'courses',
match: {
location: 'Plant Hall',
credits: 4
}
}) console.log(JSON.stringify(selectedInstitution.courses, null, 2))
}