Основная проблема заключается в том, что вы запрашиваете с помощью статического клиента Mongo, а не возвращенного подключенного экземпляра.В общем, все это выглядит гораздо более запутанным, чем должно быть.
const MongoClient = require('mongodb').MongoClient;
const { COSMOS_CONN } = process.env;
let client = null;
module.exports = async (context, req) => {
const monsterId = req.query.monsterId;
if (monsterId) {
client = client || await MongoClient.connect(COSMOS_CONN, { useNewUrlParser: true });
context.log('Running query now...');
const monster = await client
.db('mfw-dev')
.collection('monsters')
.findOne({
id: monsterId,
del: false
});
context.res = {
body: { monster },
};
} else {
context.res = {
status: 400,
body: "Please pass a 'monsterId' in the query string"
};
}
};
Вы заметите основные различия здесь:
- Я не звоню
context.done
в любом месте - Я не обрабатываю никаких ошибок
Это потому, что context.done
автоматически вызывается, когда функция async
завершена, и если в любой момент любой изasync
вызывает throw, ошибка перехватывается и регистрируется автоматически.
Следует отметить, что вы, возможно, захотите что-то более надежное в настройке MongoClient, то есть, вероятно, лучше проверить, существует ли клиент и подключены, но я оставлю вас делать мелкие мелочи :) 1022 *