1
votes

Comment réparer "TypeError: Impossible de définir la propriété 'Approuvé' de null"?

Donc, tout mon code fonctionnait bien, jusqu'à ce que sur l'un de mes contrôleurs d'application, j'ajoute du code, et maintenant cela me lance cette erreur lorsque j'essaye de POSTER les données:

const express = require('express');
const multer = require('multer');
const uploadConfig = require('./config/upload');

const SessionController = require('./controllers/SessionController');
const SpotController = require('./controllers/SpotController');
const DashboardController = require('./controllers/DashboardController');
const BookingController = require('./controllers/BookingController');
const ApprovalController = require('./controllers/ApprovalController');
const RejectionController = require('./controllers/RejectionController');

const routes = express.Router();
const upload = multer(uploadConfig);

routes.post('/sessions', SessionController.store);

routes.get('/spots', SpotController.index);
routes.post('/spots', upload.single('thumbnail'), SpotController.store);

routes.get('/dashboard', DashboardController.show);

routes.post('/spots/:spot_id/bookings', BookingController.store);

routes.post('/bookings/:booking_id/approvals', ApprovalController.store);
routes.post('/bookings/:booking_id/rejections', RejectionController.store);

module.exports = routes;

Ceci est mon RejectionController, où je définis si les réservations sont fausses (et il existe également un ApprovalController qui ne modifie que la fausse valeur de booking.approved en true, et cela me renvoie la même erreur):

const mongoose = require('mongoose');

const BookingSchema = new mongoose.Schema({
    date: String,
    approved: Boolean,
    user: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    },
    spot: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Spot'
    }
});

module.exports = mongoose.model('Booking', BookingSchema);


4 commentaires

Pouvez-vous coller votre modèle de réservation?


Avez-vous vérifié si booking n'est pas nul dans const booking = await Booking.findById (booking_id) .populate ('spot');


Je suis un peu nouveau dans cet univers mais, n'est-ce pas ce que vous demandez à la mangouste? Avec le BookingSchema.


mettre un point d'arrêt sur cette ligne const booking = await Booking.findById (booking_id) .populate ('spot'); et voir ce qu'est la réservation, son plus probablement indéfinie ou nulle


3 Réponses :


0
votes

Il est difficile de dire quelle est la cause première de l'erreur, mais la variable booking est définie sur null après le retour de la promesse. Soit la réservation n'est pas trouvée dans la base de données, soit le booking_id n'est pas transmis via les paramètres de la demande. Je recommanderais d'envelopper votre code d'attente asynchrone dans un essai pour aider au débogage et voir quelle est l'erreur de console enregistrée.

async store(req, res) {
   try {
        const { booking_id } = req.params;

        const booking = await Booking.findById(booking_id).populate('spot');

        booking.approved = false;

        await booking.save();

        return res.json(booking);

    } catch (err) {

        console.error(err);

    }
}


0 commentaires

0
votes

Essayez de remplacer votre valeur booléenne approuvée par une valeur booléenne approuvée? dans votre schéma MongoDB

cela lui permettra d'être nullable


1 commentaires

Quand je mets '?' après le type 'Boolean', VSCode ne le reconnaît pas.



0
votes

J'ai trouvé le problème, chez Insomnia, je ne transmettais pas l'ID de réservation, c'est pourquoi il n'a pas pu définir la propriété null.


0 commentaires