1、创建 和 更新数据
router.post('/column/news', (req, res) => {
let time = new Date()
let createTime = moment(time).format('YYYY-MM-DD')
let { id } = req.body
newsTextModel.findById(id, (err, data) => {
if (!data) {
newsTextModel.create({ ...req.body, createTime }, (err, data) => {
if (err) {
res.json({
code: '1001',
msg: '创建失败~~',
data: null
})
return;
}
res.json({
code: 200,
msg: '编辑成功',
data: data
})
})
} else {
newsTextModel.updateOne({ _id: id }, { $set: { ...req.body, createTime } }, (err, data) => {
if (err) {
res.json({
code: '1001',
msg: '创建失败~~',
data: null
})
return;
}
res.json({
code: 200,
msg: '编辑成功',
data: data
})
})
}
})
});
2、根据 id 删除数据
router.delete('/column/news', (req, res) => {
// 获取 id
let { id } = req.query
newsTextModel.deleteOne({ _id: id }, (err, data) => {
if (err) {
res.json({
// 响应编号
code: '1003',
// 响应的信息
msg: '删除失败~~',
// 响应的数据
data: null
})
return;
}
res.json({
// 响应编号
code: 200,
// 响应的信息
msg: '删除成功',
// 响应的数据
data: {}
})
})
})
3、根据字段“timestamp” 查数据库最后(最新)一条
router.get('/files/avatar', async (req, res) => {
const json = await avatarModel.find().sort({ timestamp: -1 }).limit(1)
res.json({
code: 200,
msg: null,
data: json
})
});
4、根据 id 精确查询 和 分页查询
router.get('/column/news', async (req, res) => {
let { id, page, pageSize } = req.query
let start = (page - 1) * pageSize
if (id) {
newsTextModel.findById(id, (err, data) => {
if (err) {
res.json({
code: '1001',
msg: '读取失败~~',
data: null
})
return;
}
res.json({
code: 200,
msg: null,
data: data
})
})
} else {
const list = await newsTextModel.find().skip(start).limit(pageSize);
const count = await newsTextModel.find().countDocuments();
res.json({
code: 200,
msg: null,
data: list,
total: count
})
}
});
5、上传单个图片
router.post('/files/avatar', (req, res) => {
// 创建 form 对象
const form = formidable({
multiples: true,
// 设置上传文件的保存目录
uploadDir: 'public/avatar/images',
// 保持文件后缀
keepExtensions: true
});
// 解析请求报文
form.parse(req, (err, fields, files) => {
if (err) {
next(err);
return;
}
let time = new Date()
let timestamp = moment(time).unix()
// 服务器保存该图片的访问 URL
let path = '/avatar/images/' + files.file.newFilename; //将此数据保存在数据库中 (photo命名(不一定是‘photo’,以输出实际为准)与api调试工具参数名一致)
let url = `http://${DBHOST}:3000${path}`
avatarModel.create({ url, timestamp }, (err, data) => {
if (err) {
res.json({
code: '1001',
msg: '创建失败~~',
data: null
})
return;
}
res.json({
code: 200,
msg: '编辑成功',
data: url
})
})
});
})