【发布时间】:2018-05-28 04:43:10
【问题描述】:
我正在尝试构建一个在请求时连接到 mlab 的 alexa 技能。我在我的代码中放置了多个 console.log() 消息,并观察到控制台里面
db.once('open', function callback() { console.log('a');}) 没有被执行。
查看 CloudWatch 日志时,我收到以下消息:
REPORT RequestId:1b57c8f8-61b6-11e8-9038-5fc7c131d222 持续时间:40.54 毫秒计费持续时间:100 毫秒内存大小:128 MB 使用的最大内存:51 MB
我使用了猫鼬规定的标准连接语句:
"use strict";
var Alexa = require("alexa-sdk");
const mongoose = require("mongoose");
var handlers = {
'LanguageIntent': function () {
let uri = 'mongodb://my_uri';
mongoose.connect(uri);
let speechOutput;
let db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback() {
console.log("I AM HERE");
});
console.log("Outside");
}
}
exports.handler = function(event, context, callback){
var alexa = Alexa.handler(event, context);
alexa.registerHandlers(handlers);
alexa.execute();
};
据我了解,请求没有超时,而且肯定还有其他一些我无法理解的问题。 cloudwatch 日志不显示“我在这里”。但是“外部”会记录在日志中。这让我觉得在建立连接的时候肯定有问题。
在这方面的任何帮助将不胜感激!
【问题讨论】:
-
您需要验证您是否可以从该位置实际访问该实例作为您的首要任务。不建议在不使用承诺解析或回调的情况下调用
mongoose.connect()。有关更多详细信息,请参阅猫鼬文档中的 Connections。此外,您应该提供一个“完整”的简单列表,而不是“伪代码”,它只是确认连接是问题。见How to create a Minimal, Complete, and Verifiable example -
如前所述,“首要任务”是实际查看服务和托管 MongoDB 实例之间的连接是否可能。这涉及使用 Mlab 验证网络设置,以确保允许您的远程主机并且您也可以从任何其他位置进行连接。 AWS Lambda 也是如此,通过确保其他一切都在最小的“hello world”下工作,然后验证它是否可以与外部主机通信。将所有细节放入您的问题中。除了指出缺少的东西之外,这不是其他人可以真正“调试”的东西。所以展示一切。
标签: mongodb aws-lambda alexa alexa-skills-kit