我正在try 创建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对象上公开任何方法.

有什么 idea 吗?

推荐答案

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

所以你需要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
    });
});

Mongodb相关问答推荐

如何在MongoDB中正确解析佛年?

MongoDB即使在使用索引时也很慢

如何从集合中移除所有匹配的数组项?

MongoDb 聚合未正确分组

Nestjs中不同语言数据的mongodb聚合代码

如何在 2 个应用程序之间共享mongoose模型?

使用绝对类型在 Typescript 中编写 Mongoose 的类型化模型和模式的类和接口

如何在 Mongo 聚合管道中获取限制之前的计数

更新 mongodb 文档中的特定字段

Stripe:必须提供来源或客户

使用 MongoDB 进行分页

从命令行创建 MongoDB 用户

如何在任意深度查找 MongoDB 字段名称

Cannot connect to MongoDB errno:61

在 Mongo 中,$near 和 $nearSphere 有什么区别?

Mongo聚合框架,排序然后分组不起作用

如何在 MongoDB 中删除此弃用警告,为什么会这样?

更新时提示Field name duplication not allowed with modifiers

将新值推送到 mongodb 内部数组 - mongodb/php

Mongodb Compass 无法在 Ubuntu 18.10 中打开