Mongoose lambda 示例在每次被触发时创建一个新连接
Mongoose lambda example creates a new connection everytime it gets triggered
我一直在关注猫鼬官方文档,并将猫鼬连接构建到我的处理程序中:
这是我的处理程序文件的根目录。
let conn = null;
const uri = process.env.ORDERS_URI;
mongoose.connection.on('connected', () => {
Logger.log('Mongoose default connection open to ' + uri);
});
现在在我的实际处理函数中:
export const handler: Handler = async (event: any, context: Context) => {
if (conn == null) {
console.log('CONN IS NULL');
conn = await mongoose.connect(uri, {
bufferCommands: false, // Disable mongoose buffering
bufferMaxEntries: 0, // and MongoDB driver buffering
useNewUrlParser: true,
});
}
context.callbackWaitsForEmptyEventLoop = false;
cachedServer = await bootstrapServer();
return proxy(cachedServer, event, context, 'PROMISE').promise;
};
但是,在使用无服务器离线测试时,每次点击我都会启动一个新连接。
命中 1:1 新 'connected to mongoose' 消息
命中 2:2 条新 'connected to mongoose' 消息 ...
等等...
我试过用一些变化来移动它们,但无论哪种方式我最终还是得到相同的 'bug'。
如果我尝试使用 mongoose.createConnection
代替——实际上连接到数据库在我放置它的任何地方都不起作用。
这是因为无服务器离线执行需要在每次调用时使缓存失效。 AWS Lambda 不是这种情况。您可以使用 --skipCacheInvalidation
禁用此行为,但它似乎 be gone anyway.
我一直在关注猫鼬官方文档,并将猫鼬连接构建到我的处理程序中:
这是我的处理程序文件的根目录。
let conn = null;
const uri = process.env.ORDERS_URI;
mongoose.connection.on('connected', () => {
Logger.log('Mongoose default connection open to ' + uri);
});
现在在我的实际处理函数中:
export const handler: Handler = async (event: any, context: Context) => {
if (conn == null) {
console.log('CONN IS NULL');
conn = await mongoose.connect(uri, {
bufferCommands: false, // Disable mongoose buffering
bufferMaxEntries: 0, // and MongoDB driver buffering
useNewUrlParser: true,
});
}
context.callbackWaitsForEmptyEventLoop = false;
cachedServer = await bootstrapServer();
return proxy(cachedServer, event, context, 'PROMISE').promise;
};
但是,在使用无服务器离线测试时,每次点击我都会启动一个新连接。
命中 1:1 新 'connected to mongoose' 消息 命中 2:2 条新 'connected to mongoose' 消息 ...
等等...
我试过用一些变化来移动它们,但无论哪种方式我最终还是得到相同的 'bug'。
如果我尝试使用 mongoose.createConnection
代替——实际上连接到数据库在我放置它的任何地方都不起作用。
这是因为无服务器离线执行需要在每次调用时使缓存失效。 AWS Lambda 不是这种情况。您可以使用 --skipCacheInvalidation
禁用此行为,但它似乎 be gone anyway.