Estoy tratando de actualizar un documento de base de datos mongoDB para mi lista de tareas pendientes, estoy usando Node, Mongoose, Express y Express Router.
Esquema de mangosta:
const mongoose = require('mongoose'); const toDoSchema = new mongoose.Schema({ value: { type: String, }, category: { type: String, }, _id: { type: String } }); module.exports = mongoose.model('toDo', toDoSchema)Código de parche:
router.patch('/changeCategory', async (request, response) =>{ const updateItem = new toDoModel({ category: request.body.category }) let id = request.body._id let category = request.body.category try{ await updateItem.findByIdAndUpdate({_id: id},{category: category}) response.json('Category changed') } catch (error){ console.log(error.message) } })Solicitud de insomnio:
PATCH http://localhost:5000/changeCategory { "category":"inProgress", "_id": "628de6210da8e45f52217083" }y lo que obtengo es "updateItem.findByIdAndUpdate no es una función"
Esta forma está mal. porque no puede usar findByIdAndUpdate con la variable updateItem ... si desea usar findByIdAndUpdate , debe usar el modelo importado y luego usar este método.
código de ejemplo:
const toDoModel = require("../models/your-model") router.patch('/changeCategory', async (request, response) => { let category = request.body.category const updateItem = new toDoModel({ category }) let id = request.body._id try { // This part was changed ***** await toDoModel.findByIdAndUpdate(id,{category: category}) response.json('Category changed') // ******* } catch (error) { console.log(error.message) } })Espero que esta solución te ayude.