猫鼬连接:在中间件中调用连接之间的行为不同

时间:2019-06-25 09:37:30

标签: javascript express mongoose

为什么当我将Configuration as Code调用分离到另一个文件时,该程序会在每个请求时创建新的连接?它使我的mongo地图集连接使用量最大化

type tmpStruct struct {
}

func (t *tmpStruct) Write(p []byte) (n int, err error) {
    fmt.Fprintf(os.Stdout, "%s", string(p))
    return len(p), nil
}

func demoLoadingBarCount(maximumInt int) {
    buf := tmpStruct{}
    if nBuf, ok := interface{}(&buf).(io.Writer); ok {
        bar := progressbar.NewOptions(
            maximumInt,
            progressbar.OptionSetTheme(progressbar.Theme{Saucer: "█", SaucerPadding: "-", BarStart: ">", BarEnd: "<"}),
            progressbar.OptionSetWidth(100),
            progressbar.OptionSetWriter(nBuf),
        )
        for i := 0; i < maximumInt; i++ {
            bar.Add(1)
            time.Sleep(10 * time.Millisecond)
        }
    }
}

上面会创建大量的连接,当我在主mongoose.connect中调用//I put the connect in a middleware //middleware.js const mongoose = require('mongoose') function connect(req, res, next) { mongoose.connect(db_url, {}, function (error) { //handle next }) } module.exports = connect //and called it in the app app.use(mongoMiddleware) 时,情况就不同了

connect

使用上面的代码,连接使用情况为“稳定”,它不会填写所有可用的连接。

1 个答案:

答案 0 :(得分:1)

代替使用app.use() (不需要将连接用作中间件,而是建立连接功能并将其导出)

然后只需要在app.js中使用猫鼬连接文件

const mongooseConnection=require("path to the connect function")

我们将在您运行节点应用程序时执行连接代码。