NodeJs api与mongoose的任何请求都会转到另一个集合上,效率很高。

问题描述 投票:0回答:1

我正在为有用户的应用编写nodeJs api,我想让每个用户使用另一个mongo集合。

我通过params字段中的URL地址来识别每个用户,一切都很好,但当我动态地去收集时,它是非常缓慢的。

任何一个想法如何做得更快?

感谢提前;)

app.js

这段代码在2.5秒内完成了request

POST /login 200 2487.531 ms - 206

    app.use("/:businessUrl", (req, res, next) => {
  console.log(req.params.businessUrl);
   mongoose
  .connect(process.env.MONGO_URI + `${req.params.businessUrl}retryWrites=true&w=majority`,)
    .then((result) => {
      console.log("DB Connected");
      next();
    })
    .catch((err) => {
      return next(err);
    });
});

和这段代码,当集合是硬编码做同样的req在0.5秒内

POST /login 200 461.829 ms - 206

 mongoose .connect(process.env.MONGO_URI + `businessUrl?retryWrites=true&w=majority`)
  .then((result) => {
    console.log("DB Connected");
  })
  .catch((err) => {});
mongodb express mongoose-populate
1个回答
0
投票

延迟的出现是因为每当API被击中时,你都会创建一个连接。

我可以看到,从实施,有相同的服务器,你正在使用的只是切换数据库。

所以,你可以使用 使用数据库 方法,由mongoose提供。它也有一个选项,为每个DB的连接对象维护缓存.官方文档。https:/mongoosejs.comdocsapiconnection.html#connection_Connection-useDb。

使用上述方法只会在第一次点击API时建立与数据库的连接,但如果我们在第一次点击后才点击,则会从缓存中解析。

© www.soinside.com 2019 - 2024. All rights reserved.