Node.js db.createCollection不是一个函数

Node.js db.createCollection不是一个函数,node.js,mongodb,docker,Node.js,Mongodb,Docker,我正在尝试创建mongo实例,但是我无法从mongodb nodejs驱动程序访问任何帮助器方法 我的mongo实例正在docker中运行,端口已向我的本地用户开放 TypeError: db.createCollection is not a function at /var/www/html/beacon/index.js:6:8 at args.push (/var/www/html/beacon/node_modules/mongodb/lib/utils.js:431:72) at /

我正在尝试创建mongo实例,但是我无法从mongodb nodejs驱动程序访问任何帮助器方法

我的mongo实例正在docker中运行,端口已向我的本地用户开放

TypeError: db.createCollection is not a function
at /var/www/html/beacon/index.js:6:8
at args.push (/var/www/html/beacon/node_modules/mongodb/lib/utils.js:431:72)
at /var/www/html/beacon/node_modules/mongodb/lib/mongo_client.js:254:5
at connectCallback (/var/www/html/beacon/node_modules/mongodb/lib/mongo_client.js:933:5)
at /var/www/html/beacon/node_modules/mongodb/lib/mongo_client.js:794:11
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)
从学校抄来的

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    db.createCollection("customers", function(err, res) {
        if (err) throw err;
        console.log("Collection created!");
        db.close();
    });
});
运行过程中不会返回任何错误,也不会在db对象上公开任何方法

有什么想法吗?

根据Mongodb 3.0的版本,您现在可以得到一个包含数据库对象的客户端对象:

因此,您需要指向要使用的数据库的
db
对象,在您的例子中是mydb。试试这个:

var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {   //here db is the client obj
    if (err) throw err;
    var dbase = db.db("mydb"); //here
    dbase.createCollection("customers", function(err, res) {
        if (err) throw err;
        console.log("Collection created!");
        db.close();   //close method has also been moved to client obj
    });
});

你不是面对这个问题的人。似乎3.0 mongo驱动程序有一个bug,或者这些只是破坏了向后兼容性的更改。请看这里:

要在URL中使用DB名称,您需要卸载MongoDB,更改为依赖项中的“^2.2.33”,然后执行
npm install
以安装新版本


或者,您可以使用命令npm install安装特定版本mongodb@2.2.33--save

我从命令行Mongo shell工具运行
createCollection()
时出错

TypeError:db.createCollection不是函数


在我的例子中,我无法让createcollection工作,所以我求助于将一个文档插入到我想要创建的集合中。默认情况下,Mongo将动态创建该名称的集合,前提是您有这样做的权限。这不是一个理想的解决方案,但它至少允许我继续。

你能在第6行(在
db.createCollection
之前)放一个
console.dir(db)
并在这里显示结果吗?如果时间允许,可能的重复将标记为正确答案。在我看来,db url路径很奇怪,但谢谢:)惊讶地发现,示例中的驱动程序页面上没有记录这一点,而只是记录在更改日志中。不确定您是否真的回答了这个问题