当前位置: 首页 > 面试题库 >

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

陈松
2023-03-14
问题内容

我研究猫鼬已经三天了,对这两种方法的使用我有点困惑(我知道将来会不推荐使用“ 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(),然后mongoose.connection不包含的开放连接。您应该改用mongo.createConnection()调用的返回值(已保存到中db)。

因此,代码的最后一部分应更改为:

更新

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

我看不出有什么collectionNames办法Connection;看起来您必须遵循属性到本机连接对象中才能访问该对象(请参见上面的代码)。



 类似资料:
  • Numpy、scipy、matplotlib和pylab是使用python进行科学计算的人常用的术语。 我刚刚了解了一点派拉布,我感到困惑。每当我想导入numpy时,我都可以: 我只是想,一旦我做到了 numpy也将被导入(使用alias)。所以基本上第二个比第一个做得更多。 有几件事我想问: pylab只是numpy、scipy和matplotlib的包装器,对吗 由于np是pylab中的num

  • 问题内容: 我正在使用Hibernate 3.6,并为我的代码添加了注释(与使用hibernate映射文件相对)。我遇到了使用与Hibernate的CascadeType不兼容的JPA级联选项的已知“问题”(有关更多信息,请参见此链接http://www.mkyong.com/hibernate/cascade- jpa-hibernate-annotation-common-mistake /

  • 我有一个包含文本字段(红色、绿色、蓝色)和滑块(红色、绿色、蓝色)的面板。用户应该能够使用他们喜欢的任何组件,相应的组件应该更新。(例如,在红色文本字段中输入100应将红色滑块移动到100)。

  • 我阅读了以下主题: Spring重定向属性:addAttribute vs addFlashAttribute 据我所知,flash属性和普通属性之间的主要区别在于普通属性只能保存s和原语。 但在实践中,我看到了另一个区别: 我有以下控制器方法: 和 在“ConfirmDrawRequest”页面上。jsp 我编写了以下代码片段: 现在我在页面上看不到错误消息。 如果我替换重定向属性(redire

  • 我对数据挖掘并不陌生,所以我完全被WEKA结果难倒了。希望得到一些帮助。提前谢谢! 我有一个具有二分类(S, H)的数值向量数据集。我在省略交叉验证中训练了一个朴素贝叶斯模型(尽管方法真的无关紧要)。结果如下: 如您所见,输出和混淆矩阵都有三个错误。然后,我使用具有相同属性和相同两个类的独立数据集重新评估模型。结果如下: 这就是我的问题所在。输出清楚地显示有很多错误。事实上,有44个。另一方面,混

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子: