我正在使用 mongoose 和 mocha 进行 MongoDB 模式设计和 API 开发我收到此警告...这是什么意思,它将如何影响我以及修复方法是什么?
在实际警告文本下方:
(node:9872) DeprecationWarning:监听 Db 类的事件已被弃用,将在下一个主要版本中删除。
我们使用 Mongoose、Nodejs、Serverless 和 AWS Lambda。为了使用相同的连接,而不是每次需要时打开和关闭连接,我创建了一个大小为 10 的连接池(这对于我们现在的用例来说似乎足够了)。
但问题是,当我看到 Lambda 的 Cloudwatch 日志时,发现所使用的连接并不相同。
每次调用新的 Lambda 时,都会创建一个新连接,而对该 Lambda 的后续调用将使用在第一次调用中打开的相同连接。
导致一次打开的连接数增加。在 MongoDB Atlas 上,我可以看到打开的连接数量非常多。
下面是我在没有可用缓存连接的情况下用于创建连接的代码。如果可用,将使用缓存的连接,并且不会创建新连接。
let cached_db;
exports.createConnection = async () => {
if(cached_db == null){
return await mongoose.connect(
connection_uri,
{ 'useUnifiedTopology': true ,
'useNewUrlParser': true,
'useFindAndModify': false ,
'useCreateIndex': true,
'socketTimeoutMS': 60000,
'connectTimeoutMS': 60000,
'poolSize': 10
}
).then(conn => {
cached_db = conn;
return conn;
}).catch((err) => {
console.error('Something went wrong', err);
throw err;
});
} else {
console.log("Cached db in use."); …Run Code Online (Sandbox Code Playgroud) 我们使用无服务器架构以及 AWS Lambda 和 API 网关。lambda 的执行时间在几毫秒范围内。客户端的最终响应在几秒钟内收到(这远远超过了 lambda 的执行时间,即使考虑到冷启动场景也考虑了 init 持续时间)。
\n在使用 API 网关日志进行调试时,会出现以秒为单位的集成延迟,这使得端到端响应相当慢。为了消除初始化持续时间或冷启动,我在 CloudWatch 中添加了规则,用于定期调用 lambda 以使它们保持温暖。
\n初始化持续时间被完全删除,这也有助于减少集成延迟。有些 Lambda 无法安排,因为调用它们需要身份验证,为此我添加了 5 的预配置并发。
\n该 Lambda 在日志中也有初始化持续时间。Lambda 配置是消除冷启动的另一种选择,但这不会对 API 网关上 Lambda 响应可用的时间产生影响。
\n我已按照以下链接将预配置并发分配给 Lambda:
\n\n我添加了配置的 Lambda 的 CloudWatch 日志:
\nDuration: 1331.38 ms Billed Duration: 1332 ms Memory Size: 256 MB Max Memory Used: 130 MB Init Duration: 1174.18 ms
我在 …
我正在使用 Mongodb Atlas,需要获取最后 10 条记录。为此,必须应用具有排序和限制选项的过滤器。在 mongo shell 中,我们是这样做的:
db.category.find().sort( { name: 1 } ).limit( 5 )
Run Code Online (Sandbox Code Playgroud)
或者
db.category.find().limit( 5 ).sort( { name: 1 } )
Run Code Online (Sandbox Code Playgroud)
如何使用 Mongodb Atlas 控制台的过滤器选项来获得所需的结果?我没有找到任何有关此的文档,是否在某处记录了如何使用过滤器选项?