前后端分离mongodb+node.js+express+实现登录注册和其它接口编写的代码
时间: 2023-09-15 09:15:13 浏览: 51
下面是一个示例的代码,实现了用户注册、登录和其他接口的编写。
首先需要安装MongoDB、Node.js和Express框架,可以使用以下命令:
```
sudo apt install mongodb
sudo apt install nodejs
sudo apt install npm
sudo npm install express
```
接下来创建一个名为`server.js`的文件,这是我们的服务端代码。
```
const express = require('express');
const bodyParser = require('body-parser');
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// 连接MongoDB数据库
const url = 'mongodb://localhost:27017';
const dbName = 'mydatabase';
const client = new MongoClient(url, { useNewUrlParser: true });
client.connect(function(err) {
assert.equal(null, err);
console.log("Connected successfully to server");
});
const app = express();
const port = 3000;
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
// 用户注册接口
app.post('/register', function(req, res) {
const db = client.db(dbName);
const collection = db.collection('users');
const user = req.body;
collection.insertOne(user, function(err, result) {
if (err) {
res.status(500).send('Error inserting user');
} else {
res.status(200).send(result.ops[0]);
}
});
});
// 用户登录接口
app.post('/login', function(req, res) {
const db = client.db(dbName);
const collection = db.collection('users');
const user = req.body;
collection.findOne({ email: user.email, password: user.password }, function(err, result) {
if (err) {
res.status(500).send('Error finding user');
} else if (result) {
res.status(200).send(result);
} else {
res.status(401).send('Invalid email or password');
}
});
});
// 其他接口
app.get('/api/data', function(req, res) {
res.send('Data from server');
});
app.listen(port, function() {
console.log('Server listening on port ' + port);
});
```
上面的代码实现了以下功能:
- 连接MongoDB数据库
- 解析请求体中的JSON数据
- 用户注册接口:将用户信息插入到MongoDB数据库中
- 用户登录接口:查找MongoDB数据库中是否存在用户名和密码匹配的记录
- 其他接口:返回简单的字符串数据
然后创建一个名为`index.html`的文件,这是我们的客户端代码。
```
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>Example</h1>
<form id="register-form">
<label>Email:</label>
<input type="email" name="email" required><br>
<label>Password:</label>
<input type="password" name="password" required><br>
<button type="submit">Register</button>
</form>
<form id="login-form">
<label>Email:</label>
<input type="email" name="email" required><br>
<label>Password:</label>
<input type="password" name="password" required><br>
<button type="submit">Login</button>
</form>
<div id="data"></div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function() {
$('#register-form').submit(function(event) {
event.preventDefault();
$.ajax({
url: '/register',
method: 'POST',
data: $(this).serialize(),
success: function(data) {
alert('User registered successfully');
},
error: function() {
alert('Error registering user');
}
});
});
$('#login-form').submit(function(event) {
event.preventDefault();
$.ajax({
url: '/login',
method: 'POST',
data: $(this).serialize(),
success: function(data) {
alert('User logged in successfully');
},
error: function() {
alert('Invalid email or password');
}
});
});
$.ajax({
url: '/api/data',
method: 'GET',
success: function(data) {
$('#data').text(data);
}
});
});
</script>
</body>
</html>
```
上面的代码实现了以下功能:
- 用户注册表单:向服务端发送POST请求来注册用户
- 用户登录表单:向服务端发送POST请求来登录用户
- 数据展示区域:向服务端发送GET请求来获取数据
最后在终端中运行服务端代码:
```
node server.js
```
然后在浏览器中打开`index.html`文件,就可以进行用户注册、登录和其他接口的测试了。