Quiero crear una ruta de publicación para poder almacenar los fragmentos de código escritos por el usuario en la colección en MongoDB.
el esquema se vería así: -
const newSnippetSchema= new mongoose.Schema({ title:String, snippet:String })para ser breve, estoy trabajando en la creación de una aplicación web como codeSandbox o code-pen donde puedo guardar el código que el usuario ha guardado o escrito... Quiero enviar datos en formato Json cuando se activa Post Route
Cree una API web de publicación http.
const express = require('express') const mongoose = require('mongoose') const NewSnippetSchema = require('./models/newSnippetSchema') const app = express() mongoose.connect('mongodb://localhost/mydb', { useNewUrlParser: true, useUnifiedTopology: true }) app.set('view engine', 'ejs') app.use(express.urlencoded({ extended:false })) app.post('/newSnippet', async (req, res) => { await NewSnippetSchema.create({ title: req.body.title, snippet: req.body.snippet }) res.redirect('/') }) app.listen(process.env.PORT || 5000);código catchAsync:
const catchAsync = (fn) => function asyncUtilWrap(...args) { const fnReturn = fn(...args); const next = args[args.length - 1]; return Promise.resolve(fnReturn).catch(next); }; export default catchAsync;Código de error de la aplicación:
class AppError extends Error { constructor(message, statusCode) { super(message); this.statusCode = statusCode; this.status = `${statusCode}`.startsWith('4') ? 'fail' : 'error'; this.isOperational = true; Error.captureStackTrace(this, this.constructor); } } export default AppError;Código del controlador:
const snippetController = catchAsync(async (req, res, next) => { const { title, snippet } = req.body; if (!title || !snippt) { return next(new AppError('All fields are required', 400)); } const snippetDoc = await Snippet.create(req.body); return res.status(201).json({ status: 'success', snippetDoc }); }); export default snippetController;Código del enrutador:
router.route('/snippet').post(snippetController);La base de datos no tiene nada que ver con esto. No importa cómo lo almacene, lo que importa es cómo representarlo en su representación HTML en la interfaz de usuario.
Simplemente use la función de codificación HTML incorporada para codificar el fragmento de código antes de almacenarlo en la base de datos (por ejemplo, codificar todo & como & algo como esto).
Después de obtener los datos, decodifíquelos antes de mostrarlos en la interfaz de usuario.