Nodejs 如何连接 mongodb?

要使用 Node.js 连接 MongoDB,通常使用 Mongoose 这个对象文档模型(ODM)库。下面就来简单介绍一下使用 Mongoose 连接 MongoDB 的方法。

Mongoose 是一个 Node.js 包,提供了一个使用 mongo 数据库的接口。在应用程序中使用它是非常轻量级的 npm 包。 Mongoose 拥有所有方法集,可以连接和访问存储在 Mongo 数据库中的数据。

react-giant:一个react+next.js+mongodb的学习项目。

安装Mongoose库

这是 Node.js 项目开发必须的步骤之一,使用 npm 命令进行安装,在终端输入以下命令即可安装:

npm install mongoose --save

连接 MongoDB

通常在使用数据库的时候,都需要先建立连接,通过以下方式建立连接:

const mongoose = require("mongoose");

const connectDb = async () => {
    await mongoose.connect("mongodb://localhost:27017/admin");
};

connectDb();

在上面的代码中,mongoose.connect() 函数用于建立到MongoDB的连接。第一个参数指定了MongoDB的连接URL,格式为 mongodb://<host>:<port>/<database-name>?<options>,其中<host> 指定MongoDB所在的主机名或IP地址,<port>指定MongoDB的端口号,<database-name> 指定要连接的数据库的名称,<options>是一些配置项,以参数的方式传递,如 ?useNewUrlParser=true&useUnifiedTopology=true。对于需要用户名和密码连接的数据库,则<host>参数方式为 username:password@127.0.0.1:27017

需要注意的是,mongoose 不同版本连接方式上有点区别,上述代码是在版本 7.0.2 可以正常使用。

定义模型和模式

在使用 Mongoose 时,通常需要先定义一个模型和对应的模式。模型是指 MongoDB 中的一个集合,而模式则指定了集合中每个文档的结构和字段。以下是一个简单的模式定义示例:

const mongoose = require("mongoose");

const userSchema = new mongoose.Schema({
    username: {
        type: String,
        required: true,
    },
    email: {
        type: String,
        required: true,
        unique: true,
        maxlength: [255, "Email length must be at most 255"],
    },
    ip: {
        type: String,
        required: true,
    },
});

const User = mongoose.model("User", userSchema);

CRUD操作

在定义了模型和模式之后,就可以使用模型进行 CRUD(创建、读取、更新、删除)操作。以下是一些常用的示例代码:

const mongoose = require("mongoose");

// 创建记录
async function createUsers() {
    const result = await User.create({
        username: "Quintion",
        email: "quintiontang@gmail.com",
        ip: "127.0.0.1",
    });
    return result;
}

// 查询文档列表
async function getUsers() {
    const users = await User.find();
    return users;
}

// 查询单个
async function getUser() {
    const user = await User.find({
        username: "Quintion",
    });
    return user;
}
// 删除记录
async function deleteUser() {
    return await User.remove({
        username: "Quintion",
    });
}

上述代码只是一个简单的示例,如果需要一个完整的可运行的代码,可以查看下面的项目:

react-giant:一个react+next.js+mongodb的学习项目。

本文正在参加「金石计划」 ” 感谢支持

原文链接:https://juejin.cn/post/7217621436511289404 作者:天行无忌

(0)
上一篇 2023年4月3日 上午10:00
下一篇 2023年4月3日 上午10:10

相关推荐

发表回复

登录后才能评论