MongoDB-Express应用中'dbo'的含义?官方示例命名缘由
在MongoDB-Express应用中,
dbo的含义与命名原因 首先要明确:SQL Server里的dbo是Database Owner(数据库所有者),但在MongoDB生态里没有这个概念,官方示例里的dbo是完全不同的含义。
一、示例中dbo的实际作用
看你贴的官方代码:
- 在
app.js里,const dbo = require("./db/conn");导入的dbo,其实是封装了MongoDB连接逻辑的模块对象 - 这个模块提供两个核心方法:
connectToServer:负责和MongoDB服务器建立连接,并且初始化指定的employees数据库实例getDb:供业务代码调用,获取已经初始化好的数据库对象,用来操作集合、执行CRUD操作
简单说,这个dbo就是个数据库连接管理工具,和SQL Server里的数据库所有者完全不沾边。
二、官方为何用dbo作为变量名?
这纯粹是文档编写者的习惯选择:
- 借用了SQL开发者熟悉的
dbo缩写,降低转用MongoDB的学习门槛——很多从关系型数据库转过来的开发者对dbo有印象,用它指代数据库操作相关的对象,更容易快速理解 - 它只是一个普通的变量名,你完全可以改成
dbConnector、mongoInstance这类更直观的名字,丝毫不影响功能
附官方示例代码
app.js
const express = require("express"); const app = express(); const cors = require("cors"); require("dotenv").config({ path: "./config.env" }); const port = process.env.PORT || 5000; app.use(cors()); app.use(express.json()); app.use(require("./routes/record")); // get driver connection const dbo = require("./db/conn"); app.listen(port, () => { // perform a database connection when server starts dbo.connectToServer(function (err) { if (err) console.error(err); }); console.log(`Server is running on port: ${port}`); });
db/conn.js
const { MongoClient } = require("mongodb"); const Db = process.env.ATLAS_URI; const client = new MongoClient(Db, { useNewUrlParser: true, useUnifiedTopology: true, }); var _db; module.exports = { connectToServer: function (callback) { client.connect(function (err, db) { // Verify we got a good "db" object if (db) { _db = db.db("employees"); console.log("Successfully connected to MongoDB."); } return callback(err); }); }, getDb: function () { return _db; }, };
内容的提问来源于stack exchange,提问作者rch
相关产品推荐
相关产品推荐

