如何在内部npm模块上使用Mongoose

 wsx迪_257 发布于 2023-02-09 12:35

如何在驻留的npm模块中使用Mongoose已经打开的连接?/node_modules

例如:

应用

共同

db.js

node_modules

a_module

楷模

a_model.js

index.js

app.js

app.js触发打开通过连接requir荷兰国际集团common/db.js和执行connect()方法.

在后来的app.js一个电话就是发a_model/index.js在需要的a_model.js文件,然后发布了findOne(),因为它检测到没有连接打开,以便将呼叫排队永远永不执行从未被执行调用.

我已经通过检查日志检查了连接是否已打开,因此问题是其他问题.

值得注意的是,我能够使类似的设置正常工作,但不必a_module是一个npm模块,它是app文件夹下面的常规目录.

最后,我在下面很棒的家伙的帮助下正常工作.

通过使用globalnodejs对象,我能够暴露数据库连接,而不会使代码混乱:

db.js:

global.db = mongoose;

a_model.js:

mongoose = global.db;

瞧!

参考:http://productbuilder.wordpress.com/2013/09/06/using-a-single-global-db-connection-in-node-js/

1 个回答
  • 节点缓存调用,require以便您不必在每个模块上重新启动模块require.

    http://nodejs.org/docs/latest/api/modules.html#modules_caching

    但是,不保证子依赖项使用相同的对象:

    http://nodejs.org/docs/latest/api/modules.html#modules_module_caching_caveats

    mongoose连接依赖于此缓存机制来保持与MongoDB的开放连接.所以在你的情况下,当你a_module进入它自己的模块时,你实际上是实例化两个mognoose对象,只有你的第一个mongoose对象是打开一个连接.第二个对象永远不会打开连接.

    你可以通过让每个模块建立自己的连接来解决这个问题,或者你必须回到a_module不是一个独立的包.

    2023-02-09 12:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有