【问题标题】:Which params are passed to MongoClient.connect callback? [duplicate]哪些参数被传递给 MongoClient.connect 回调? [复制]
【发布时间】:2019-10-07 16:02:12
【问题描述】:

根据this,参数为:

  1. url (string) – MongoDB 的连接 url。
  2. [options] (object) – 插入命令的可选选项
  3. callback (function) – 这将在执行此方法后被调用。如果发生错误,第一个参数将包含 Error 对象,否则为 null。而第二个参数将包含初始化的 db 对象,如果发生错误,则为 null。

但是根据this,前两个参数是一样的,只是传给回调函数的参数不一样。传递给回调的第二个参数是 MongoClient 实例。

哪一个是正确的?当我测试时,第二个来源似乎是正确的,但我希望第一个是正确的。

【问题讨论】:

  • documentation is quite clear。并不是说options 被标记为可选。这基本上意味着函数可选地除了接受强制uri之外的不同参数。此外,callback 也是可选,因为调用以返回 Promise 也是一个“选项”。唯一需要注意的是目前如果您省略 useNewUrlParser 选项,您将收到警告,直到驱动程序主要版本更改并且“新解析器”被移动到默认值。
  • 我对@9​​87654330@ 并不感到困惑,顺便说一句,感谢您的回复。
  • 重点不在于“只是”那个选项,而是如何连接的基本语法。自从您提出问题以来,您似乎对此感到困惑。如前所述,文档和链接示例在语法上非常清楚。

标签: node.js mongodb


【解决方案1】:
Using below npm pack

 "mongodb": "^3.0.2",
 "mongoose": "^5.0.6"

Connect Mongo using Below Code
var db = {};
var mongoose = require('mongoose');
mongoose.connect(config.url);
//config.url is your Mongodb connection string
//Add your Model as required
db.Roles = mongoose.model("Roles",require("./schemas/roles.schema"));
//Export it to Module
module.exports = db;


You can call this common JS File

const db = require("../db");
const mongoose = require('mongoose');

//Sample Snippet change as Required

exports.getUserRoles = async (req) => {
    logger.info("Get User Roles service");
    const RoleModel = db.Roles;
    return await RoleModel.find({}, { "_id": 1, "name": 1, "features": 1 }).then(result => {
        return result
    }).catch(err => {
        throw err;
    });
};

【讨论】:

  • 我不想用猫鼬
  • 你能清楚地说明你想用什么吗?
【解决方案2】:

两者都是正确的,在旧版本 1.x 或 2.x 中,callback(err, db)

在较新的版本 3.x 中,callback(err, mongoClient)

如果您使用的是较新版本(不是 1.x 或 2.x),请使用第二个

注意:您可以使用https://mongodb.github.io/node-mongodb-native/ 获取特定版本的文档

【讨论】:

  • 但我希望它是以前的样子。因为我想要 db 实例,而不是 MongoClient 实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 2016-12-09
相关资源
最近更新 更多