【问题标题】:Throw custom exception Azure mobile app easy tables script引发自定义异常 Azure 移动应用简易表格脚本
【发布时间】:2016-12-12 06:51:57
【问题描述】:

我正在尝试为 Azure 移动应用中的简易表格编写自定义脚本,并具有以下代码。执行时,我收到一条错误消息,指出“发送后无法设置标头”。我究竟做错了什么?

table.insert(function (context) {  
  var request = context.req;  
  var response = context.res;  
  var customer = context.item;  
  var isactive = customer.active;
  if (isactive ==="false"){  
      response.status(406).send('Customer Error`);  
      //response.end();  
      return;
  } 
  else {  
      return context.execute();  
  }
}

【问题讨论】:

    标签: azure-mobile-services


    【解决方案1】:

    这通常是由于 res.send 或 res.json 在每个请求中被多次调用造成的。我将您的代码复制到空白应用程序的表格中,但无法重现该错误。您的应用程序中的其他地方一定存在导致错误的原因。

    如果您使用 postman 之类的东西来 POST 到表端点,您是否看到 406 响应以及控制台中的错误,或者只是错误?如果您看到 406 响应,则 res.send 在返回 406 之后正在管道中的某处执行。如果没有,它以前发生过。

    你有其他正在执行的中间件吗?

    【讨论】:

    • 我刚刚想到的另一件事-您使用的是什么版本?几个月前发布的版本中解决了一个问题。
    • 它同时在控制台和邮递员上发布。在我添加了一个 catch 块并记录了错误之后,它在控制台上发布。我没有其他中间件。但我最终通过为这段代码添加了一个自定义中间件来让它工作。
    • 我有一个新问题。使用自定义中间件执行和查询后,我回到 table.insert(function (context) )。如果我使用 return context.execute() 方法,我该如何操作返回到浏览器的响应(例如我想删除密码字段)?
    • context.execute 只返回一个产生结果的承诺。你可以调用 context.execute().then(function (results) { results.map(x => { delete x.password; return x }) })
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    相关资源
    最近更新 更多