如果你正在进行网站或者应用程序的开发,你可能已经听说过 MongoDB,这是一种非关系型数据库,它有很多优点,比如储存半结构化数据、水平伸缩自如、支持频繁的写操作等等。但是,MongoDB 不是关系数据库,因此它没有表、行、列等概念,而是使用 BSON 格式存储数据。因此,在使用 MongoDB 时,我们需要使用一些库来操作它,其中 Express.js 和 Mongoose 是非常流行的选择。
本文将详细介绍如何在 Express.js 中使用 Mongoose 构建 MongoDB 模型,包括创建模型、声明模型的属性和方法,以及如何在 Express.js 中使用这些模型。
创建 Express.js 应用
首先,我们需要创建一个 Express.js 应用。在终端中使用以下命令来创建一个新应用:
$ npm install express-generator -g $ express myapp $ cd myapp $ npm install
现在,我们已经创建了一个新的 Express.js 应用,并安装了所需的依赖。
使用 Mongoose 创建 MongoDB 模型
接下来,我们需要使用 Mongoose 来创建 MongoDB 模型。Mongoose 是 MongoDB 的一个对象数据建模库,它可以让我们使用 JavaScript 方便地操作 MongoDB 数据库。
首先,我们需要安装 Mongoose:
$ npm install mongoose
在 Express.js 应用中,我们通常会将数据库的连接信息写在一个单独的文件中。在这个文件中,我们可以使用以下代码来连接 MongoDB 数据库:
// www.javascriptcn.com code example
const mongoose = require('mongoose');
const dbUrl = 'mongodb://localhost/mydb';
mongoose.connect(dbUrl, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log('MongoDB connected'))
.catch(err => console.log(`MongoDB connection error: ${err.message}`));在连接数据库之后,我们就可以创建一个新的模型了。下面的示例代码将创建一个名为 User 的模型,并定义了两个属性:name 和 email。注意,我们使用了 Mongoose 的 Schema 类来定义模型的属性。
// www.javascriptcn.com code example
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: {
type: String,
required: true,
},
email: {
type: String,
required: true,
unique: true,
},
});
const User = mongoose.model('User', userSchema);
module.exports = User;上面的代码中,我们使用了名为 User 的字符串作为模型的名称。这个名称将用来保存模型的数据,并在以后的代码中使用。
在 Express.js 中使用 MongoDB 模型
现在,我们已经创建了一个名为 User 的模型,接下来,我们需要在 Express.js 中使用它。下面的示例代码将使用 Express.js 创建一个 API,包括 POST 和 GET 请求。
// www.javascriptcn.com code example
const express = require('express');
const User = require('./models/user');
const app = express();
app.use(express.json());
app.post('/users', (req, res) => {
const user = new User(req.body);
user.save()
.then(() => res.send(user))
.catch(err => res.status(400).send(err));
});
app.get('/users', async (req, res) => {
const users = await User.find();
res.send(users);
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));在上面的代码中,我们首先引入了已经创建好的 User 模型,并在 POST 请求中使用它来创建一个新用户。 同时在 GET 请求中使用 User 模型来获取所有的用户。在这个示例代码中,我们使用了 async/await 的语法来获取所有用户。
在使用上述代码时,访问 POST /users 时可以添加新的用户,其中,请求的 body 类似于:
{
"name": "Tom",
"email": "tom@example.com"
}同时,在访问 GET /users 时会返回所有的用户记录。
结语
本文介绍了如何使用 Express.js 和 Mongoose 进行 MongoDB 数据库建模,包括创建模型、声明属性和方法,以及在 Express.js 应用中使用这些模型。如果你想使用 MongoDB,这将是一个很好的起点。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d5b713a941bf7134ae8391