【发布时间】:2019-06-28 22:32:29
【问题描述】:
MongoDB Stitch Webhook docs 描述了我的精确用例:使用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' 不是函数
是文档有误,还是我误入歧途?
【问题讨论】:
-
你试过
return requestLogs.insertOne(...)吗? -
感谢您的建议。我刚刚尝试过,并且返回了相同的 TypeError。
-
对不起,我复制了您的步骤,但无法重现该问题。当我在函数编辑器控制台中使用您的导出时,我确实收到了一个错误,即
response未定义,但我可以通过模拟第二个参数来解决这个问题:exports({query: {arg1: 'hello', arg2: "world!"}, body:BSON.Binary.fromText('{"msg": "world"}')}, {setStatusCode: () => {}, setBody: () => {}})。如果您仍有问题,您还可以在MongoDB community slack#stitch 频道上获得答案。
标签: mongodb mongodb-atlas mongodb-stitch