- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我已经研究了 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()
那么 mongoose.connection
不包含一个打开的连接。您应该改用 mongo.createConnection()
调用的返回值(您已保存到 db
中)。
所以最后一段代码应该改为:
更新
db.db.collectionNames(function (error, names) {
if (error) {
console.log('Error: '+ error);
} else {
console.log(names);
};
});
我在 Connection
上没有看到 collectionNames
方法;看起来您必须将属性向下跟踪到 native 连接对象才能访问它(参见上面的代码)。
关于node.js - mongoose.connection() 和 mongoose.createConnection() 之间的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13162979/
最近我开始使用 New Relic 来分析我的应用程序,我遇到了一些奇怪的事情。每隔一段时间,我的应用程序就会挂起 15-20 秒,然后失败。深入研究,我发现 percona mysql 的 crea
下面是一个简单的代码片段,展示了如何连接到 VoltDB 服务器。 ClientConfig clientConfig = new ClientConfig(); Client client = Cl
我在使用 NodeJs 连接到 Docker 容器中的 MySQL 数据库时遇到问题。 错误指出:“错误:用户'用户名'@'172.19.0.3'的访问被拒绝(使用密码:NO)”,但据我所知,我给出了
使用 mysqljs,我想从我的本地数据库中查询一些数据并用 react 呈现它们。这是我到目前为止所做的: import React from 'react'; var mysql = r
我想知道 Node.js 是否提供错误处理程序将捕获代码中的所有错误的任何保证,如下所示: var c = net.createConnection(port, host); c.on('error'
所以这是连接代码。 var factory = new ConnectionFactory { HostName = "myserver", UserName = "testuser"
我正在尝试创建一个套接字服务器,但当我尝试启动服务器时,我不断收到ECONNREFUSED。 var net = require('net'); var server = net.createConn
我正在使用 Typescript Express Node Typeorm 创建一个应用程序。我遇到这个问题,当我使用 typeorm 通过服务类调用数据库时,我得到连接默认值未找到。这是我的代码片段
我想在 Node 应用程序中连接到 Unix Domain Socket 服务器。如果连接成功并打开,则应执行一个循环(可能需要一些时间)。如果在执行此循环期间发生错误,它应该收到某种通知。如果根本不
我有一个无状态的 ejb,并且我与一个 jms 队列建立连接并向它发送消息。 我这样做的部分代码: @Resource(mappedName = "jms/abcd") private Connect
我需要知道使用异步createConnection是否更好 这会改变加载速度吗? 我正在使用express、ReactJS、promise-mysql 我应该使用什么? 这个: async c
我不再使用默认连接,而是使用显式定义的连接。 除了跟踪我的 mongo 连接状态的事件处理程序都没有触发外,我的代码可以正常工作。 当我使用默认的 mongoose 连接时,事件曾经触发。 (mong
我们在 IIS 8 下运行的 ASP.NET Web 应用程序中有一个简单的 RabbitMQ .NET 客户端。我们不使用任何 SSL,连接代码也很简单。 var factory = new Con
作品: var mongoose = require('mongoose'); var db = function() { return { config: function(conf)
我对 mongoose.createConnection 函数有疑问,这是我的测试代码: "use strict"; // connect to mongodb://localhost/node_ma
createConnection 有什么作用? var connection = mysql.createConnection({ host : 'example.org', user
我试图在 Angular 中运行一个简单的 HTTP 请求,但遇到了以下错误: angular2.dev.js:23941 Error: Uncaught (in promise): EXCEPTIO
我已经研究了 mongoose 三天了,对这两种方法的使用有点困惑(我知道“mongoose.connection()”将来会被弃用......) 问题是:当我试图转换(从“mongoose.conn
我使用 https://github.com/felixge/node-mysql对于我的申请何时以及为何使用 db_pool = mysql.createConnection(db); 或 db_p
尝试在 mac 上运行 sequelize 迁移时看到以下错误。 这是 sequelize 内置的,所以我不知道为什么它没有被加载。 npx sequelize-cli db:seed Sequeli
我是一名优秀的程序员,十分优秀!