微信小程序云函数超时, 其中一种原因及其解决方法

作者: 科技微讯

日期:

我写的一个小程序云函数在本地调试时, 可以正常执行, 没有返回任何错误, 但部署到云端后每次执行都提示超时: task timed out after 3 seconds.

超时的原因很多, 我的原因是: 该云函数通过 mongoose 连接到一个 mongodb 数据库, 执行数据库操作后没有主动关闭连接. 我的解决方法是在 return 之前添加 mongoose.connection.close(), 示例代码:

const cloud = require("wx-server-sdk");
const mongoose = require("mongoose");
cloud.init();

exports.main = async (event, context) => {
  try {
    await mongoose.connect("mongodb://xxxxxx", {
      useNewUrlParser: true,
      useUnifiedTopology: true,
      useFindAndModify: false,
      user: "xxx",
      pass: "xxx",
      authSource: "xxx",
    });
    console.log("数据库连接成功!");
  } catch (e) {
    console.log("数据库连接失败:", e);
  }

  // do something...

  db.close();
  return {
    event: event,
  };
};

2021/06/07 补充:但是我们不应该 close 数据库连接,关于如何保持数据库连接,同时又避免数据库连接超时,请看我另一篇文章