我想使用mongodb数据库,但我注意到有两个不同的数据库,有自己的网站和安装方法:mongodb和mongoose.所以我想问自己这个问题:"我使用哪一个?".
所以为了回答这个问题,我问社区你是否可以解释这两者之间有什么区别?如果可能的利弊?因为他们看起来和我很相似.
我是新来使用mongoose,想知道是什么的根本区别mongoose.connect()和mongoose.createConnection(),特别是在一般使用一个比另一个的时候有什么事情要考虑.
我对官方文档的理解是,一般只有一个连接mongoose.connect()使用,而如果有多个连接实例mongoose.createConnection()则使用.
希望有人能够澄清更多关于此的内容.
另外,如果我的理解是正确的,mongoose.createConnection()在单一连接中使用有什么缺点?为什么我们不建议mongoose.createConnection()每个案例都使用标准化连接?
目前我有我的连接mongoose.js的代码:
var mongoose = require('mongoose');
var uriUtil = require('mongodb-uri');
var mongodbUri = 'mongodb://localhost/db_name';
var mongooseUri = uriUtil.formatMongoose(mongodbUri);
mongoose.connect(mongooseUri);
module.exports = mongoose;
需要连接的文件是test.js:
var mongoose = require('../model/mongoose');
var schema = mongoose.Schema({...});
如何更新mongoose.js以使用mongoose.createConnection(...)函数的多个连接?
当我做这样的更改时,我开始只对一个连接进行更改:
var mongoose = require('mongoose');
mongoose.createConnection('mongodb://localhost/db_name');
mongoose.open('localhost');
module.exports = mongoose;
我得到"未定义不是一个函数".如果我使用此代码:
var mongoose = require('mongoose');
db = mongoose.createConnection('mongodb://localhost/db_name');
db.open('localhost');
module.exports = mongoose;
我得到"错误:试图打开未关闭的连接"
有什么建议?
我有一个目录结构
./lib
./lib/model1.js
./lib/model2.js
两个模型都使用mongoose连接到同一个MongoDB实例,但定义了不同的模型:
// model1.js
var mongoose = require ('mongoose');
mongoose.connect ('bla')
var db = mongoose.connection;
var schema1, model1;
db.on('error', console.error.bind(console, 'database, why you no connect?'));
db.once('open', function callback () {
  schema1 = mongoose.Schema({
    // some properties
  });
  model1 = mongoose.model1 ('model1', schema1);
});
创建数据库连接一次并为每个模型重用它的最佳方法是什么?什么是最好的目录结构?也许./lib/middleware/db.js?
这个问题似乎很相关,但它使用mongodb npm模块而不是mongoose,问题不清楚,所有作者的评论都被删除了.
我正在使用 mongodb 和 mongoose 来处理我的数据库需求。我目前有这个:
mongoose.connect(secrets.db, {server:{poolSize: 1}});
mongoose.connection.on('error', function() {
  console.error('MongoDB Connection Error. Make sure MongoDB is running.');
});
作为我的 mongo 连接。我想改变这一点,以便每个登录(使用护照)的用户都有自己的数据库。所以当我这样做时,show dbs我想看看user_ObjectID_database_name如何修改我的代码以获得这个结果?我想要它,因为我相信从我的研究来看它更安全。但是,我找不到有关如何执行此操作的任何好的指南。我确信它们存在,但我已经花了 4 个小时的时间寻找即使是我能猜到的半好的也没有运气。
Currents 我只有一个users收藏。
这是我当前的代码,当用户/signup作为POST请求点击时运行。
exports.postSignup = function(req, res, next){
  req.assert('email', 'Please sign up with a valid email.').isEmail();
  req.assert('password', 'Password must be at least 6 characters long').len(6);
  var errors = req.validationErrors();
  if (errors) {
    req.flash('errors', errors);
    req.flash('form', {
      email: req.body.email
    });
    return res.redirect('/signup');
  }
  // calls …我正在尝试实现一项功能,用户可以在登录时决定要连接到的数据库。由于它是一个网络应用程序,在所有客户端都可以使用的服务器上运行,因此如何在不更改每个客户端数据库的情况下实现此功能?
在我们公司中,我们使用猫鼬作为MongoDB API。我阅读了所有文档,但没有注意到在同一应用程序内一次使用多个连接到不同主机上不同数据库的多个连接的任何功能-而不会损害其他客户端的工作。
根据这篇文章,我完成的最有价值的事情是基于多个猫鼬实例打开几个连接: 在单个node.js项目中的猫鼬和多个数据库
我创建了一些文件,例如:
var mongoose = require('mongoose');
mongoose.createConnection('mongodb://10.20.100.71:27017/DB_NAME');
module.exports = exports = mongoose;
然后我要求他们:
let stageAccess = require('./databsesConnections/stageAccess');
let prodAccess = require('./databsesConnections/prodAccess');
我调试了文件并检查了连接是否建立。此外,我检查了mongoose文档,并得出结论,我可以选择哪个连接为默认连接,如文档所述:“ Mongoose在调用mongoose.connect()时会创建一个默认连接。您可以使用mongoose访问该默认连接。连接。”
所以我尝试了:
mongoose.connection = mongoose.connections[1];
而且效果很好。
因此,实际的问题是,如果客户端1接近该应用程序,选择连接dbNum1并开始工作,然后客户端2接近该应用程序并选择连接到dbNum2,将会发生什么?
除了系统的admin之外,我还有数据库A、B、C
我想添加一个对A、B、C具有读写访问权限的用户。
// attempt 1
use admin
db.createUser({ user: "Bob", pwd: "1234", roles: [
    { role: "readWriteAnyDatabase", db: "admin" }
] })
。
// attempt 2
use admin
db.createUser({ user: "Bob", pwd: "1234", roles: [
    { role: "readWrite", db: "A" },
    { role: "readWrite", db: "B" },
    { role: "readWrite", db: "C" }
] })
对于这些尝试,用户存储在 db admin中。那么我如何使用admin进行身份验证,但在A、B、C之一中执行操作? …
大家好,我最近几天使用 Nodejs 开发了一个简单的应用程序,并创建了这个函数来从 mongodb 返回客户端实例
const mongodb = require("mongodb");
const { db } = require("../config/env");
const conection = async () => {
    try {
        const client = await mongodb.MongoClient.connect(db.uri, {
            useNewUrlParser: true,
            useUnifiedTopology: true,
        });
        return client;
    } catch (error) {
        throw error;
    }
};
module.exports = conection;
我为访问数据层创建了这个简单的函数并返回插入的记录
const index = async ({ limit = 10, offset = 0, filter = {} }) => {
    const client = await conection();
    if (filter._id) {
        filter._id = mongodb.ObjectID(filter._id);
    }
    try { …performance distributed-computing cluster-computing mongodb node.js