微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FetchError:网络超时:https://db.fauna.com/

如何解决FetchError:网络超时:https://db.fauna.com/

我目前正在使用 netlify 在我的应用程序中托管某些逻辑。我已经阅读了 faunadb 的已知问题,并探索了解决方案,例如在函数体之外声明对象的实例。我已经尝试了建议的解决方案,但没有运气。我正在寻找头韵解决方案,因为随着应用程序的增长,这些错误变得频繁。

const faunadb = require('faunadb')
const q = faunadb.query
const client = new faunadb.Client({secret})

exports.handler = async (event,context) => {
  //body of function goes here
}

解决方法

我绝不肯定这会对您有所帮助,但实际上我一直在做相反的事情,将 Client 对象实例inside 包含在我的 Handler 中。

我收到了很多 HTTP_TIMEOUT 错误,因此我将所有内容移到处理程序中,错误不再出现。

不过,我不记得我在哪里读到的。但到目前为止它已经奏效了!

以下是我查询 FaunaDB 的 Netlify 函数之一,例如:

const headers = {
  'Access-Control-Allow-Origin': '*','Access-Control-Allow-Headers': 'Content-Type','Access-Control-Allow-Methods': 'GET,POST,PUT,DELETE','Access-Control-Allow-Credentials': true,'Content-Type': 'application/json'
}

exports.handler = async (event) => {
  const { query,Client } = require('faunadb')
  const client = new Client({
    secret: process.env.FAUNADB_SECRET
  })
  
  console.log('Function `get-last-order` invoked')
  try {
    const response = await client.query(
      query.Paginate(query.Match(query.Index("orders_by_id_desc")),{ size: 1 })
    )
    console.log('success',response.data[0])
    /* Success! return the response with statusCode 200 */
    return {
      headers,statusCode: 200,body: JSON.stringify(response.data[0].id),}
  } catch (error) {
    console.log('error',error)
    /* Error! return the error with statusCode 400 */
    return {
      headers,statusCode: 400,body: JSON.stringify(error),}
  }
}

希望这对你有帮助。

另外需要注意的是,函数有 10 秒的执行限制。但如果您的函数运行时间超过 10 秒,您应该先尝试修复该问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。