接口操作 - 集合

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
      })
    })
  });
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值