'then is not a function' 在 MongoDB Stitch Webhook 中
'then is not a function' in MongoDB Stitch Webhook
MongoDB Stitch Webhook docs 描述了我的精确用例:使用 POST
方法调用 insertOne
然后 return 插入的 _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"}')})
一个错误被 returned 表明 .then
不是一个函数。
error: TypeError: 'then' is not a function
是文档错了,还是我误入歧途了?
某些方法,例如 .then
,会在函数编辑器中抛出错误。就我而言,这是功能编辑器的缺点,而不是我的代码中的错误。 使用 fetch
或 Postman 调用 webhook,函数按预期执行。
Incoming Webhook 文档包含一个特殊说明:
If you want to debug a webhook function response from the function
editor, you must manually provide the HTTP response object when you
run the function.
exports( { body: "This document is the webhook payload" }, new
HTTPResponse() )
这让我意识到函数编辑器作为 JS 处理程序的特殊性质。使用 Postman 我确认函数 运行 在调用时没有错误。函数编辑器产生的错误是一个转移注意力的错误。
MongoDB Stitch Webhook docs 描述了我的精确用例:使用 POST
方法调用 insertOne
然后 return 插入的 _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"}')})
一个错误被 returned 表明 .then
不是一个函数。
error: TypeError: 'then' is not a function
是文档错了,还是我误入歧途了?
某些方法,例如 .then
,会在函数编辑器中抛出错误。就我而言,这是功能编辑器的缺点,而不是我的代码中的错误。 使用 fetch
或 Postman 调用 webhook,函数按预期执行。
Incoming Webhook 文档包含一个特殊说明:
If you want to debug a webhook function response from the function editor, you must manually provide the HTTP response object when you run the function.
exports( { body: "This document is the webhook payload" }, new HTTPResponse() )
这让我意识到函数编辑器作为 JS 处理程序的特殊性质。使用 Postman 我确认函数 运行 在调用时没有错误。函数编辑器产生的错误是一个转移注意力的错误。