gra*_*ing 10 javascript mongodb node.js node-mongodb-native
我只是在学习nodejs的mongodb-native驱动程序.
我这样连接.
var mongo=require("mongodb")
var serv=mongo.Server("localhost", 27017)
var dbase=mongo.Db("MyDatabase", serv)
Run Code Online (Sandbox Code Playgroud)
这很有效.但是,如果我尝试使用相同的服务器创建新的数据库连接,我会收到错误.
var dbase2=mongo.Db("MyDatabase2", serv)
Run Code Online (Sandbox Code Playgroud)
"错误:无法跨多个Db实例共享服务器或ReplSet实例"
但是如果首先建立新的服务器连接,它就可以工作.
var serv2=mongo.Server("localhost", 27017)
var dbase2=mongo.Db("MyDatabase2", serv2)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是为什么有2个连接函数,一个用于Server,一个用于Db,当它们似乎必须一起使用时?
为什么不这样.
var dbase=mongo.Db("localhost", 27017, "MyDatabase")
Run Code Online (Sandbox Code Playgroud)
我想创建自己的功能,但是我想知道是否有其他原因它们是分开的.
谢谢.
这是 mongo 文档上解决方案的链接,供参考。(似乎与其他海报提到的解决方案相同)
分离与 mongo 服务器和数据库的连接的目的是用于当您想要连接到 ReplSet 服务器或其他自定义参数时的情况。这样,您就有了一个连接到 mongodb 服务器的单独进程。
数据库连接调用是单独的,只是因为您在这里遇到的情况:您不仅仅想连接到 mongo 服务器和单个数据库,而是连接到多个数据库。连接到数据库和服务器的这种分离允许这种灵活性。
另一个解决方案:使用node-mongoskin
Mongoskin可以做你想做的事......它允许通过一个命令连接到服务器和数据库。不是 mongo-native 的解决方案,但值得考虑作为您未来项目的替代库。
var mongo = require('mongoskin');
var db = mongo.db('localhost:27017/testDB');
Run Code Online (Sandbox Code Playgroud)