mongoose.connection() 和 mongoose.createConnection() 之间的混淆

2023-11-24

我已经研究了 mongoose 三天,对这两种方法的使用有点困惑(我知道“mongoose.connection()”将来会被弃用...)

问题是:当我尝试转换(从“mongoose.connection()”到“mongoose.createConnection()”)此示例的action.js 文件时https://gist.github.com/2785463这似乎对我不起作用......

这是我的代码...

var mongoose = require('mongoose'),
db = mongoose.createConnection('localhost', 'test');

db.on('error', function () {
  console.log('Error! Database connection failed.');
});

db.once('open', function (argument) {
  console.log('Database connection established!');

  mongoose.connection.db.collectionNames(function (error, names) {
    if (error) {
      console.log('Error: '+ error);
    } else {
      console.log(names);
    };
  });
});

这是我的终端输出(在我的 ubuntu 终端上输入“node test.js”..)

Database connection established!

/home/_user_/Scrivania/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:437
    throw err;
          ^
TypeError: Cannot call method 'collectionNames' of undefined
  at NativeConnection.<anonymous> (/home/_user_/Scrivania/test2.js:11:25)
  at NativeConnection.g (events.js:192:14)
  at NativeConnection.EventEmitter.emit (events.js:93:17)
  at open (/home/_user_/Scrivania/node_modules/mongoose/lib/connection.js:408:10)
  at NativeConnection.Connection.onOpen (/home/_user_/Scrivania/node_modules/mongoose/lib/connection.js:415:5)
  at Connection._open (/home/_user_/Scrivania/node_modules/mongoose/lib/connection.js:386:10)
  at NativeConnection.doOpen (/home/_user_/Scrivania/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js:47:5)
  at Db.open (/home/_user_/Scrivania/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:287:14)
  at Server.connect.connectCallback (/home/_user_/Scrivania/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:235:7)
  at g (events.js:192:14)

如果你不打电话mongoose.connect() then mongoose.connection不包含打开的连接。您应该使用您的返回值mongo.createConnection()改为调用(您已保存到db).

所以最后一段代码应该改为:

UPDATED

db.db.collectionNames(function (error, names) {
  if (error) {
    console.log('Error: '+ error);
  } else {
    console.log(names);
  };
});

我没有看到collectionNames方法上Connection;看起来您必须遵循属性进入本机连接对象才能访问它(请参阅上面的代码)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongoose.connection() 和 mongoose.createConnection() 之间的混淆 的相关文章

随机推荐