NodeJS
连接MongoDB数据库
Mongoose
代码示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<div>
<div>用户名:<input type="text" id="username"></div>
<div>密码:<input type="password" id="pwd"></div>
<div>年龄:<input type="number" id="age"></div>
<div><button id="register">注册</button></div>
</div>
<div>
<button id="update">更新</button>
<button id="delete">删除</button>
</div>
<table>
<thead>
<tr>
<td>id</td>
<td>用户名</td>
<td>年龄</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script>
const register = document.querySelector('#register')
const username = document.querySelector('#username')
const pwd = document.querySelector('#pwd')
const age = document.querySelector('#age')
const update = document.querySelector('#update')
const deleteButton = document.querySelector('#delete')
register.onclick = () => {
// console.log(username.value, pwd.value, age.value)
fetch('/api/user/add', {
method: 'POST',
body: JSON.stringify({
username: username.value,
pwd: pwd.value,
age: age.value
}),
headers: {
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(res => {
console.log(res)
})
.catch(err => console.log(err))
}
deleteButton.onclick = () => {
fetch('/api/user/delete/6317decdeb469ce9190d8c5c')
.then(res => res.json())
.then(res => {
console.log(res)
})
.catch(err => console.log(err))
}
update.onclick = () => {
fetch('/api/user/update/6317decdeb469ce9190d8c5c', {
method: 'POST',
body: JSON.stringify({
username: 'username',
pwd: 'password',
age: 24
}),
headers: {
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(res => {
console.log(res)
})
.catch(err => console.log(err))
}
fetch('/api/user/list?page=1&limit=2')
.then(res => res.json())
.then(res => {
// console.log(res)
const tbody = document.querySelector('tbody')
tbody.innerHTML = res.map(item => `
<tr>
<td>${item._id}</td>
<td>${item.username}</td>
<td>${item.age}</td>
</tr>
`).join('')
})
.catch(err => console.log(err))
</script>
</body>
</html>
var express = require('express');
var router = express.Router();
const UserModel = require('../model/UserModel')
/* GET users listing. */
router.get('/user/add', (req, res, next) => {
res.send('respond with a resource');
});
router.post('/user/add', (req, res) => {
// console.log(req.body)
const {username, pwd, age} = req.body
UserModel.create({
username,
pwd,
age
})
.then(data => {
// console.log(data)
res.send({ok: 1})
})
.catch(err => console.log(err))
})
router.post('/user/update/:id', (req, res) => {
// console.log(req.body, req.params.id)
const {username, pwd, age} = req.body
UserModel.updateOne({_id: req.params.id}, { // 仅作用于第一项结果
username,
pwd,
age
}).then(data => {
// console.log(data)
res.send({ok: 1})
}).catch(err => console.log(err))
})
router.get('/user/delete/:id', (req, res) => {
UserModel.deleteOne({_id: req.params.id}).then(data => {
res.send({ok: 1})
}).catch(err => console.log(err))
})
router.get('/user/list', (req, res) => {
// console.log(req.query)
const {page, limit} = req.query
UserModel.find({}, ['username', 'age'])
.sort({age: 1})
.skip((page - 1) * limit)
.limit(limit)
.then(data => { // 列表中:仅返回的字段(默认的返回字段中会附带_id)
res.send(data)
})
})
module.exports = router;
// model/UserModel.js
const mongoose = require('mongoose')
const UserType = { // 限制数据类型
username: String,
pwd: String,
age: Number
}
const Schema = new mongoose.Schema(UserType)
const UserModel = mongoose.model('user', Schema) // 创建模型(创建users集合)
module.exports = UserModel
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('myapp:server');
var http = require('http');
require('../config/db.config') // 引入(在根文件中)
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
// config/db.config.js
const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/test') // 创建数据库