У меня есть огромный набор данных в MongoDB, я должен был сохранять его по частям, используя create
, в пакетах, скажем, 1%. Теперь я хочу прочитать это обратно. Я знаю, что nodeJS может взять тепло, потому что я читаю его в локальную переменную перед сохранением в mon go и отправляю в Angular. Я получаю сообщение об ошибке ниже, но я считаю, что эта ошибка исходит от MongoDB / Mon goose.
Было бы неплохо, если бы я мог читать данные из Mon go по частям.
(node:1096) UnhandledPromiseRejectionWarning: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to write outside buffer bounds
Справочная информация : Я использую mon goose и заполнение, см. Здесь: Заполнение не заполняется для всех элементов массива
Работает, если я ограничиваю количество документов.
вот схема, которую я пытаюсь восстановить:
const FastaSchema = new mongoose.Schema({
header: headerSchema,
healthyTissue: [{ type: mongoose.Schema.Types.ObjectId, ref: "Hidden" }],
});
const hiddenSchema = new mongoose.Schema({
children: [{ type: mongoose.Schema.Types.ObjectId, ref: "FastaElement" }]
});
const fastaElement = new mongoose.Schema({
description: String,
sequence: String,
comments: String
});
Вот код, который я использую для заполнения:
app.use("/", async (req, res) => {
const aux = await Fasta.find({}, "healthyTissue").populate({
//---------------------first level (healthy or tumor fasta file) ----------------
path: "healthyTissue",
perDocumentLimit: 1,
//--------------------- second level (hidden documents) ----------------
populate: {
path: "children",
perDocumentLimit: 1,
},
});
const aux2 = [];
aux.forEach((element) =>
element.healthyTissue.forEach((hidden) =>
hidden.children.forEach((leaf) => aux2.push(leaf))
)
);
res.json(aux2);
});