Actualmente estoy trabajando en un backend para una lista de deseos y he tenido este problema con mi código
(node:19677) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'find' of undefinedIntenté redefinir la importación de la lista de deseos e incluso la importación del usuario, pero no se solucionó.
A continuación se muestra mi código para mi lista de deseos en este momento.
import mongoose from 'mongoose'; import express from 'express'; import wishlist from '../models/wishlist_model.js'; import User from '../models/user_model.js'; import { BooksSchema } from '../models/books_model'; import { wishlistSchema } from '../models/wishlist_model'; const Books = mongoose.model('Books', BooksSchema); const app = express(); app.use(express.json()); //Create a wishlist export const createWishlist = async (req, res, next) => { const wishOwner = await User.find({"username" : `${req.body.username}`}) .exec() .then(user =>{ if (user != 0) { const wish = new wishlist({ wishlist_id: mongoose.Types.ObjectId(), _id: user[0]._id, username: req.body.username }); wish.save().then(result=>{ console.log(result); res.status(201).json({ msg: `Wishlist created for ${req.body.username}` }) }) } else{ return res.status(400).json({msg: "User does not exist"}); } }); }; //Add units to Wishlist export const addToWishlist = async (req, res, next) => { let bookToAdd = await Books.find({"isbn" : `${req.query.isbn}`},{"title" : 1 , "price" : 1}).exec() let bookTitle = bookToAdd[0].title; let wishOwner = await User.find({"username" : `${req.query.username}`}).exec() let wishlist = await wishlist.find({"username" : `${req.query.username}`}).exec() let newWishBooks = wishlist[0].books; newWishBooks.push(bookTitle); await wishlist.updateOne( { "username": `${req.query.username}` }, { $set: { books: newWishBooks }}); res.json({ msg: `Successfully added ${bookTitle} to ${wishOwner[0].username}'s Wishlist!` } ); }¡Cualquier ayuda sería apreciada! Gracias
No menciona en qué línea se produce el error, pero al mirarlo, diría que el problema está aquí:
let wishlist = await wishlist.find({"username" : `${req.query.username}`}).exec() porque la lista de wishlist no está definida cuando intentas usarla. ¿Tal vez querías usar wishOwner ?
Probablemente esta línea
let wishlist = await wishlist.find({"username" : `${req.query.username}`}).exec() está causando un error, porque la lista de wishlist (la variable recién declarada) no está definida, siempre que la lista de Wishlist (capital) sea el modelo que desea invocar para consultar la base de datos.
let wishlist = await Wishlist.find({"username" : `${req.query.username}`}).exec()