相关疑难解决方法(0)

connect()vs createConnection()

我是新来使用mongoose,想知道是什么的根本区别mongoose.connect()mongoose.createConnection(),特别是在一般使用一个比另一个的时候有什么事情要考虑.

我对官方文档的理解是,一般只有一个连接mongoose.connect()使用,而如果有多个连接实例mongoose.createConnection()则使用.

希望有人能够澄清更多关于此的内容.

另外,如果我的理解是正确的,mongoose.createConnection()在单一连接中使用有什么缺点?为什么我们不建议mongoose.createConnection()每个案例都使用标准化连接?

mongoose

25
推荐指数
1
解决办法
5943
查看次数

如何在全球范围内提供mongoose连接

我正在使用express 3.x和mongoose 3.6.4.

到目前为止,我一直在我的express apps.js文件中创建一个mongoose连接,如下所示:

var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/mytest');
Run Code Online (Sandbox Code Playgroud)

然后我将我的模型分成单独的文件,如models/user,如下所示:

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;

var userSchema = new Schema({
userId: ObjectId,
givenName:String ...
});

exports.User = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)

然后在多个路由文件中,我使用了User模型,如下所示:

var User = require('./models/user').User;
User.findById(id, function(err, user){ ...
Run Code Online (Sandbox Code Playgroud)

这对当地的发展很有帮助.所有型号共享相同的连接.

但是现在我想使用mongoose.createConnection()并创建一个可以类似方式使用的连接池.我想在应用程序启动时建立一个连接池,并为所有模型使用池.所以,我试过这个:

var conn = mongoose.createConnection("localhost","dpatest", 27017,{user:"???",pass:"???"});
Run Code Online (Sandbox Code Playgroud)

但模型不会自动共享连接.所以,我尝试了各种各样的东西,比如导出连接并尝试在模型中使用它.但除了为每个模型建立单独的连接之外,没有任何其他工作.

有人可以解释如何使用mongoose.createConnection()创建单个连接池吗?

以下是关于我的问题的更多信息:

/************ app.js *****************/
var http = require('http');
var path = require('path');
var express = require('express');
//these are my routing files
var auth = require('./src/auth'); …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js express

14
推荐指数
1
解决办法
1万
查看次数

Mongoose Model.find()在未连接到数据库时挂起

我正在经历一些错误情况,试图了解如何处理这些情况.

在没有数据库连接的情况下,Mongoose Model.find(...)调用似乎挂起.下面是示例代码.我会假设使用err对象调用回调,但事实并非如此.

如何防止模型调用挂起?readyState每次访问模型时,是否需要手动检查?

// app.js
// Let's use a non-existing host so connecting fails:
// (callback is invoked with err object)
mongoose.connect('mongodb://localhostXXX/blog', function(err){ ... });

BlogPost  = mongoose.model('BlogPost', BlogPostSchema);

// api.js
exports.list_posts = function(req, res) {

    // Ready state is '0' = disconnected (since we used a wrong hostname)   
    console.log('DB ready state: ' + BlogPost.db.readyState);

    // This will not invoke the callback:
    BlogPost.find(function(err, threads) {
        // Never called...
    });
 }
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

10
推荐指数
2
解决办法
4179
查看次数

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

我已经研究猫鼬三天了,我对使用这两种方法感到有点困惑(我知道将来会弃用"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);
    };
  });
});
Run Code Online (Sandbox Code Playgroud)

并且有我的终端输出(在我的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) …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

mongoose ×4

node.js ×3

express ×1

mongodb ×1