MongoDB Stitch Webhook中的“然后不是功能”

时间:2019-06-09 05:46:05

标签: mongodb mongodb-atlas mongodb-stitch

MongoDB Stitch Webhook docs描述了我的确切用例:使用POST方法调用insertOne然后返回插入的_id。

我将下面的示例(直接从文档中)粘贴到了Stitch Function Editor中。

exports = function(payload, response) {
  const mongodb = context.services.get("mongodb-atlas");
  const requestLogs = mongodb.db("test").collection("requestlogs");
  requestLogs.insertOne({
    body: EJSON.parse(payload.body.text()),
    query: payload.query
  }).then(result => {
    response.setStatusCode(201);
    response.setBody(result.insertedId);
  })
};

我通过调用以下命令在函数编辑器控制台中执行了该函数:

exports({query: {arg1: 'hello', arg2: "world!"}, body:BSON.Binary.fromText('{"msg": "world"}')})

返回错误,表明.then不是函数。

  

错误:TypeError:“那么”不是函数

文档错了吗?还是我误入歧途了?

1 个答案:

答案 0 :(得分:0)

某些方法,例如.then,在函数编辑器中引发错误。就我而言,这是函数编辑器的缺点,而不是代码中的错误。 使用fetch或Postman调用Webhook,该函数按预期执行。

Incoming Webhook文档包含一个特殊说明:

  

如果要调试来自功能的Webhook函数响应   编辑器,则当您必须手动提供HTTP响应对象   运行该功能。

     

exports({正文:“此文档是webhook有效负载”},新   HTTPResponse())

这使我意识到函数编辑器作为JS处理程序的特质。使用Postman,我确认该函数在调用时没有错误。函数编辑器生成的错误是红色鲱鱼。