1

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

我将下面的示例(直接来自文档)粘贴到缝合功能编辑器中。

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:'then' 不是函数

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

4

1 回答 1

0

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

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

如果要从函数编辑器调试 webhook 函数响应,则必须在运行函数时手动提供 HTTP 响应对象。

export( { body: "此文档是 webhook 有效负载" }, new HTTPResponse() )

这提醒了我函数编辑器作为 JS 处理程序的特殊性质。使用Postman,我确认该函数在调用时运行没有错误。函数编辑器生成的错误是一条红鲱鱼。

于 2019-06-28T14:32:29.780 回答