首页 > 解决方案 > Express App 的 CRUD 操作协助

问题描述


我没有太多经验,我正在尝试创建一个简单的笔记应用程序,我可以在其中使用 CRUD。我已经能够创建一个便笺,但我一直坚持要为 Delete/Put 实际放置什么。

下面的代码


我的 app.js 文件:

const express = require('express');
const mongoose = require('mongoose');
const methodOverride = require("method-override")

const app = express();
const Note = require('./models/note');
const notesRouter = require('./routes/notes');
require('dotenv').config();

app.set('view engine', 'ejs');
app.use(express.urlencoded({ extended: false }));
app.use(methodOverride('_method'));

app.get('/', async (req, res) => {
  const notes = await Note.find().sort('-createdAt');
  res.render('index', { notes: notes });
});

mongoose.connect('mongodb://localhost/notes', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

app.use('/', notesRouter);
app.listen(process.env.PORT || 8080, () => {
  console.log(`Server Has Started`);
});

我的 notes.js 文件:

const express = require('express');
const router = express.Router();
const Note = require('../models/note');

router.get('/new', (req, res) => {
  res.render('new');
});

router.post('/', async (req, res) => {
  let note = await new Note({
    title: req.body.title,
    description: req.body.description,
  });
  try {
    note = await note.save();
    res.redirect('/');
  } catch (e) {
    console.log(e);
    res.render('new');
  }
});

module.exports = router;

我似乎找不到要输入的正确代码,以便我可以实际删除或更新现有笔记。我将不胜感激任何信息和帮助。

标签: javascriptnode.jsexpressmongoose

解决方案


删除操作——

router.route('/delete/:id')
.delete((req, res)=>{
const {id}=req.params;
Note.findOneAndDelete({_id:id})
.then(()=>res.send('deleted!'))
.catch(err=>res.send(err))
})

如果需要,设置您自己的路由,从前端发送id或其他您可以在数据库中找到文档的方式,并相应地使用/替换以完成操作。

更新笔记-使用put

router.route('/update/:id')
.put((req, res)=>{
const {id}=req.params;
const {updateField1, updateField2, updateField3}=req.body;
Note.findOneAndUpdate({_id:id}, {$set:{updateField1, updateField2, updateField3}})
.then(()=>res.send('Note updated!'))
.catch(err=>res.send(err))

}) 

推荐阅读