Относительно того, что процесс узла не завершается или терминал не завершается, для этого может быть несколько причин. Как и соединения с открытыми БД, открытая ручка et c. Node достаточно capabale, чтобы увидеть, все ли закончено, и выйти из кода. Вы можете вручную вызвать process.exit
после await MyFunction();
для выхода, но в идеале вам это не нужно.
, поэтому я бы также предложил использовать пакет https://github.com/mafintosh/why-is-node-running, чтобы найти любые открытые дескрипторы , Вы должны добавить его там, где вы ожидаете, что ваша программа будет завершена. Таким образом, в вашем случае это будет выглядеть так:
const log = require("why-is-node-running");
onst Final = async () => {
try {
await SharedFunctions.connectToMongoDb();
await MyFunction();
log();
} catch (err) {
console.log(err);
}
};
Final();
РЕДАКТИРОВАТЬ: в соответствии с вашим последним редактированием вопроса вам нужно изменить MyFunction, чтобы это было похоже на
const MyFunction = array => {
return Promise.all(array.map(row => {
const item = new Item({
"property1": row.property1,
"property2": row.property2
});
return item.save();
}));
};
Помните, что делая это многие параллельные операции могут вызвать проблемы, вы также можете попробовать это
const MyFunction = async array => {
for (const row of array) {
const item = new Item({
"property1": row.property1,
"property2": row.property2
});
await item.save();
}
};