sql >> Databasteknik >  >> NoSQL >> MongoDB

kan inte uppdatera ett dokument via 'findById' och save() med löfte

Skulle överväga att dela upp operationen i hanterbara bitar. I det här fallet vill du uppdatera showTakenSeats fältet med biljettpositionsdata från den nya beställningen.

För det första, genom att använda async vänta med din expressrutt måste du spara beställningen och få det skapade beställningsdokumentet. Skapa ett dokument med de nya platserna och uppdatera sedan showdokumentet med findByIdAndUpdate metod.

Följande exempel beskriver ovanstående:

const express = require('express');
const router = express.Router();

const Order = require('../models/order.js');
const Show = require('../models/show.js');

router.post('/', async (req, res, next) => {
    try {
        /* create a new Order */
        const order = new Order(req.body);
        const newOrder = await order.save();

        /* create a document to use in the update with the following data structure:
            {
                'showTakenSeats.6-0': 5b53735ef7ce3d2cd4bbfee7,
                'showTakenSeats.6-1': 5b53735ef7ce3d2cd4bbfee7,
                'showTakenSeats.6-2': 5b53735ef7ce3d2cd4bbfee7 
            }

            Use the native reduce method on the array to create this 
        */
        const updatedSeats = newOrder.ticketPositions.reduce((acc, position) => {
            acc[`showTakenSeats.${position.join('-')}`] = newOrder._id;
            return acc;
        }, {});

        /* update the show document's embedded showTakenSeats 
           with the new properties from above 
        */
        const updateShow = await Show.findByIdAndUpdate(req.body._ShowId,
            { '$set': updatedSeats },
            { 'new': true }
        );

        res.json(updateShow);

    } catch (e) {
        /* this will eventually be handled by your error handling middleware */
        next(e);
    }
});


  1. Filtrera med regex MongoDB C#-drivrutin

  2. MongoDB $lookup på kapslat dokument

  3. mongo PHP-appfel:Allvarligt fel:Oupptäckt undantag 'MongoException' med meddelandet ''.' inte tillåtet i nyckel

  4. Hur skulle du modellera en vänskapsrelation i MongoDB?