当前位置:   article > 正文

Node.js 访问 MongoDB

Node.js 访问 MongoDB

在 Node.js 中访问 MongoDB 数据库通常使用官方推荐的驱动 mongodb 或者更高层次的库如 mongoose。下面我将向你展示如何使用 mongodb 驱动来连接 MongoDB 数据库并执行基本的操作。

第一步:安装 mongodb 驱动

首先,你需要安装 mongodb 驱动。可以通过 npm 安装:

npm install mongodb
  • 1

第二步:设置数据库连接

接下来,创建一个文件来设置数据库连接。通常这个文件会包含你的数据库连接信息。

// db.js
const { MongoClient } = require('mongodb');

const uri = 'mongodb://your-username:your-password@your-host:your-port/your-database';
const options = {
  useNewUrlParser: true,
  useUnifiedTopology: true
};

let client;

async function connectToMongoDB() {
  client = new MongoClient(uri, options);
  await client.connect();
  console.log('Connected to MongoDB');
}

async function closeConnection() {
  await client.close();
  console.log('Disconnected from MongoDB');
}

module.exports = {
  connectToMongoDB,
  closeConnection,
  getCollection: (collectionName) => client.db('your-database').collection(collectionName)
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

这里我们使用 MongoClient 连接到 MongoDB 数据库,并导出了几个函数来管理连接。

第三步:编写 CRUD 操作

然后,你可以编写一些函数来处理数据库操作,比如查询数据、插入数据等。

// crud.js
const db = require('./db');

async function getUsers() {
  const collection = db.getCollection('users');
  const users = await collection.find().toArray();
  return users;
}

async function addUser(user) {
  const collection = db.getCollection('users');
  const result = await collection.insertOne(user);
  return result;
}

module.exports = {
  getUsers,
  addUser
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这个例子中,我们定义了两个异步函数:

  • getUsers 用于获取所有用户。
  • addUser 用于添加一个新用户。

第四步:使用 CRUD 函数

最后,在主应用程序文件中使用这些 CRUD 函数。

// app.js
const express = require('express');
const crud = require('./crud');
const db = require('./db');

const app = express();
const port = 3000;

async function main() {
  await db.connectToMongoDB();

  app.get('/users', async (req, res) => {
    try {
      const users = await crud.getUsers();
      res.json(users);
    } catch (error) {
      console.error(error);
      res.status(500).send('Error retrieving users');
    }
  });

  app.post('/users', async (req, res) => {
    const newUser = req.body; // Assuming you have middleware to parse JSON
    try {
      const result = await crud.addUser(newUser);
      res.json(result);
    } catch (error) {
      console.error(error);
      res.status(500).send('Error adding user');
    }
  });

  app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
  });

  // Disconnect when the server is closed
  process.on('SIGINT', async () => {
    await db.closeConnection();
    process.exit(0);
  });
}

main().catch(console.error);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

在这个示例中,我们使用 Express.js 框架创建了一个简单的 Web 服务器,它有两个路由:

  • /users 路由用于 GET 请求,返回所有的用户列表。
  • /users 路由用于 POST 请求,添加新的用户到数据库。

安全提示

  • 环境变量:不要硬编码数据库凭据,而是使用环境变量来存储敏感信息。
  • 错误处理:确保正确处理数据库操作中的错误。

运行示例

确保你的 MongoDB 服务器正在运行,并且你已经创建了一个名为 users 的集合。你可以使用任何 MongoDB 客户端来创建集合结构。

然后启动你的 Node.js 应用程序:

node app.js
  • 1

这就是一个基本的例子,你可以在此基础上扩展更多的功能,比如更新和删除记录等。如果你有更具体的需求或者遇到问题,请随时告诉我!

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号