javascript - 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;
我似乎找不到要输入的正确代码,以便我可以实际删除或更新现有笔记。我将不胜感激任何信息和帮助。
解决方案
删除操作——
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))
})
推荐阅读
- reactjs - 如何使用 React 在另一个组件中调用函数?
- prolog - 如何基于变量而不是名称调用谓词函子
- android - 如何从 Google 地图返回应用程序?
- bash - 用于替换和遍历的 Bash 脚本循环
- python - 如何将函数参数传递给函数内部的函数
- python - python-bitcoinrpc 和 python-monerorpc 的问题
- unit-testing - 如何在 Ubuntu 18.04 上使用 -msan 选项运行 go test?
- python - Wikipedia api python 返回奇怪的结果
- java - 将 Java 转换为 Kotlin:类型不匹配。必需:MenuSlidingTabStrip.OnTabSelectedListener?找到:(无,无)→布尔
- javascript - 如何将 2300 格式的 aa 类型数字转换为小时,并与 Moment.js 的当前时间进行比较?