-2

这是我用来向 mongodb 插入文档的代码。

        var client = new Db('test', new Server("127.0.0.1", 27017, {}), {w: 1}),
        test = function (err, collection) {
        collection.insert({a:2}, function(err, docs) {

        collection.count(function(err, count) {
          test.assertEquals(1, count);
        });

        // Locate all the entries using find
        collection.find().toArray(function(err, results) {
          test.assertEquals(1, results.length);
          test.assertTrue(results[0].a === 2);

          // Let's close the db
          client.close();
        });
      });
    };

client.open(function(err, p_client) {
  client.collection('test_insert', test);
});

但是在运行时我收到错误

xports, require, module, __filename, __dirname) { var client = new Db('test', ^ ReferenceError: Db is not defined at Object. (C:\Users\Basic node\cheerio\mongonode.js:1:81

at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)

你能建议我如何解决这个问题吗

提前致谢

4

3 回答 3

4

请导入您正在使用的所有必需模块。Db is not defined指出它Db是在其他模块中定义的,或者您忘记声明它。

于 2013-03-11T18:34:22.670 回答
3

您会注意到这个确切的代码块发布在许多不同的 stackoverflow 问题中。这里的问题是,这是从 mongodb 文档中复制和粘贴的代码块,实际上是 mongodb nodejs 程序的第一个示例。

https://npmjs.org/package/mongodb

您会在“简介”下找到“插入文档的简单示例”。

这显然是一个不完整的例子,但很多人只是在尝试看看他们是否正确安装了所有东西并立即撞到墙上。

大多数人都会安装 mongodb 驱动程序,但会在顶部缺少如下内容:

var mongodb = require('mongodb');
var Db = mongodb.Db;
var Server = mongodb.Server;

我在这里也陷入了复制粘贴陷阱,并遇到了另一个问题,即“assertEquals”方法不存在。我看到其他人在网络上的其他地方引用了该功能,但不确定它是如何工作的。

无论如何,为了让它对我有用,我需要 assert 模块:

var assert = require('assert');

然后我用这样的东西替换了 assertEquals 行:

          assert.equal(1, count, "Unexpected result");

请注意,如果您运行了几次,您将遇到问题;它会计算那张表中的东西的数量,而且会不止一个。

您必须弄清楚如何进入 mongo 的 CLI 并删除它们以使其成功运行。

于 2013-06-24T20:34:53.650 回答
0

尝试安装mongodb原生驱动

npm install mongodb
于 2013-06-12T06:51:18.490 回答