开发者社区 问答 正文

云数据库 MongoDB集群版Node.js 连接示例



相关链接


MongoDB Node.js Driver

项目初始化mkdir node-mongodb-demo
cd node-mongodb-demo
npm init





安装驱动包以及工具包npm install mongodb node-uuid sprintf-js –save




获取云数据库 MongoDB 连接信息


请查看 MongoDB 连接信息七要素获取方法

Node.js Demo Code'use strict';
var uuid = require('node-uuid');
var sprintf = require("sprintf-js").sprintf;
var mongoClient = require('mongodb').MongoClient;
var host1 = "demotest-1.mongodb.tbc3.newtest.rdstest.aliyun-inc.com";
var port1 = 27017;
var host2 = "demotest-2.mongodb.tbc3.newtest.rdstest.aliyun-inc.com";
var port2 = 27017;
var username = "demouser";
var password = "123456";
var replSetName = "mgset-1441984991";
var demoDb = "test";
var demoColl = "testColl";
// 官方建议使用的方案
var url = sprintf("mongodb://%s:%d,%s:%d/%s?replicaSet=%s", host1, port1, host2, port2, demoDb, replSetName);
console.info("url:", url);
// 获取mongoClient
mongoClient.connect(url, function(err, db) {
    if(err) {
        console.error("connect err:", err);
        return 1;
    }
    // 授权. 这里的username基于admin数据库授权
    var adminDb = db.admin();
    adminDb.authenticate(username, password, function(err, result) {
        if(err) {
            console.error("authenticate err:", err);
            return 1;
        }
        // 取得Collecton句柄
        var collection = db.collection(demoColl);
        var demoName = "NODE:" + uuid.v1();
        var doc = {"DEMO": demoName, "MESG": "Hello AliCoudDB For MongoDB"};
        console.info("ready insert document: ", doc);
        // 插入数据
        collection.insertOne(doc, function(err, data) {
            if(err) {
                console.error("insert err:", err);
                return 1;
            }
            console.info("insert result:", data["result"]);
            // 读取数据
            var filter = {"DEMO": demoName};
            collection.find(filter).toArray(function(err, items) {
                if(err) {
                    console.error("find err:", err);
                    return 1;
                }
                console.info("find document: ", items);
                //关闭Client,释放资源
                db.close();
            });
        });
    });
});



展开
收起
云栖大讲堂 2017-10-30 16:13:28 2362 分享 版权
阿里云 AI 助理回答

这段代码示例展示了如何使用Node.js的MongoDB驱动程序连接到阿里云的MongoDB实例,并执行基本的数据库操作,包括插入和查询文档。下面是对关键步骤和阿里云相关配置的解释:

1. 初始化项目

  • 使用mkdir命令创建一个新的目录。
  • 切换到该目录下。
  • 运行npm init来初始化一个新的Node.js项目,这将生成一个package.json文件。

2. 安装依赖包

  • 通过npm install mongodb node-uuid sprintf-js --save安装必要的依赖包:
    • mongodb:MongoDB的Node.js官方驱动程序。
    • node-uuid:用于生成UUID的库。
    • sprintf-js:字符串格式化工具。

3. 获取MongoDB连接信息

  • 需要从阿里云控制台获取MongoDB实例的连接信息,包括:
    • 主机名(Host):如demotest-1.mongodb.tbc3.newtest.rdstest.aliyun-inc.com
    • 端口(Port):默认为27017。
    • 用户名(Username):用于访问数据库的用户名。
    • 密码(Password):对应的密码。
    • 副本集名称(Replica Set Name):例如mgset-1441984991
    • 数据库名(Database Name):这里使用的数据库名称,如test
    • 集合名(Collection Name):操作的具体集合,如testColl

4. 编写Node.js代码连接MongoDB

  • 使用sprintf函数构造连接URL,包含所有必需的连接参数。
  • 通过mongoClient.connect(url, ...)方法连接到MongoDB实例。
  • 在连接成功后,首先对管理员数据库进行身份验证。
  • 接着,选择目标数据库和集合,并执行插入和查询操作。
  • 最后,记得关闭数据库连接以释放资源。

注意事项

  • 安全提示:确保在生产环境中不直接在代码中硬编码敏感信息,如用户名和密码。可以考虑使用环境变量或密钥管理服务来管理这些信息。
  • 连接串模板:提供的URL模板展示了如何构建指向阿里云MongoDB副本集的连接字符串,确保了高可用性。
  • 错误处理:代码中包含了基本的错误处理逻辑,对于实际应用,可能需要更详细的日志记录和异常处理机制。

请根据你的具体需求调整代码中的数据库、集合名称以及认证信息,并确保已正确设置阿里云MongoDB实例的安全组规则,允许你的应用服务器IP访问数据库端口。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答