Я написал сервис, который анализирует видео с помощью Google Cloud Video Intelligence
И я сохраняю результаты анализа в MongoDB с помощью mongoose
Это модель, которую я использую (я упростил все, чтобы избежать путаницы):
// Video.js
const mongoose = require('mongoose');
const videoSchema = new mongoose.Schema({
analysis_progress: {
percent: { type: Number, required: true },
details: {}
},
status: {
type: String,
enum: ['idle', 'processing', 'done', 'failed'],
default: 'idle'
}
});
module.exports = mongoose.model('Video', videoSchema);
Когда операция анализа заканчивается, я вызываю функцию ниже и запускаю update
следующим образом:
function detectFaces(video, results) {
//Build query
let update = {
$set: {
'analysis_results.face_annotations': results.faceDetectionAnnotations // results is the the test result
}
};
Video.findOneAndUpdate({ _id: video._id }, update, { new: true }, (err, result) => {
if (!err)
return console.log("Succesfully saved faces annotiations:", video._id);
throw err // This is the line error thrown
});
}
И это ошибка, которую я получаю:
Error: cyclic dependency detected
at serializeObject (C:\Users\murat\OneDrive\Masaüstü\bycape\media-analysis-api\node_modules\bson\lib\bson\parser\serializer.js:333:34)
at serializeInto (C:\Users\murat\OneDrive\Masaüstü\bycape\media-analysis-api\node_modules\bson\lib\bson\parser\serializer.js:947:17)
...
Решения, которые я пробовал:
- Добавлено
{autoIndex: false}
в конфигурацию БД.
mongoose.connect(process.env.DB_CONNECTION, {useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, autoIndex: false });
- Удаление
retryWrites=true
из структуры Mongo URI. (У меня уже не было этого параметра в моем URI подключения)
Итак, я думаю, что источник проблемы в том, что я сохраняю весь результат теста, но у меня нет другой возможности сделать это. Мне нужно сохранить как есть.
Я открыт для любых предложений.