javascript - 回调在 AWS lambda 调用中不起作用
问题描述
const connectToDB = async uri => {
if (cachedDb) {
return Promise.resolve(cachedDb);
}
return MongoClient.connect(config[STAGE].dbUrls[uri], { useNewUrlParser: true, useUnifiedTopology: true }).then(db => {
cachedDb = db;
return cachedDb;
});
};
exports.handler = (event, context, callback) => {
console.log("[Find All] [event] : ", event);
context.callbackWaitForEmptyEventLoop = false;
connectToDB('MONGODB_URI_FIND').then(database => {
let db = database.db(config[STAGE].dbUrls.DB_NAME);
console.log("db connection ", db);
fetchDataFromDb(db, event, callback);
});
};
const fetchDataFromDb = (db, event, callback) => {
const { table, query } = event;
const options = { ...query.options };
delete query.options;
const { sortFields, limit, skip } = options || {};
db.collection(table).find(query, options).sort(sortFields || {}).limit(limit || 999).skip(skip || 0).toArray((error, result) => {
console.log("Fetched data[] : ", { error, result });
if (error)
callback(null, { body: error });
else
callback(null, { body: result });
});
};
在上面的代码中,回调(null,{})函数没有执行,当我使用return或context.done()而不是回调()时,代码正在工作。请帮我执行回调。提前致谢
解决方案
必须使用
context.callbackWaitsForEmptyEventLoop = false
反而
context.callbackWaitForEmptyEventLoop = false;
推荐阅读
- python - 带有时间戳的熊猫数据框 - 仅提取时间
- python - 抓取所有图像,下一页按钮,然后再次下一个按钮
- r - 缺少参数“t”,没有默认值
- java - 使用 AWS CodeBuild 在 Spring Boot 应用程序中注入环境变量
- python - 我正在使用pysimplegui,我想将按钮放在右侧
- reactjs - 使用 axios 获取数据后 React useEffect 返回空数组
- php - 如何从 author.php 的类别中显示 ACF 自定义字段
- javascript - 关于 React 的 JSX 组件和 .map() 方法
- python - 使用 python smtplib 发送邮件时出现 550 错误
- geopandas - 绘制多边形返回“'GeoSeries' 对象没有属性 '_geom'”