sql >> Database teknologi >  >> NoSQL >> MongoDB

kan ikke opdatere et dokument via 'findById' og gemme() med løfte

Ville overveje at opdele operationen i håndterbare bidder. I dette tilfælde vil du gerne opdatere showTakenSeats felt med billetpositionsdata fra den nye ordre.

For det første skal du bruge async afvente med din ekspresrute, du skal gemme ordren og få det oprettede ordredokument. Opret et dokument med de nye pladser, og opdater derefter showdokumentet ved hjælp af findByIdAndUpdate metode.

Følgende eksempel beskriver ovenstå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. forbindelse til mongoDB

  2. MongoDB Spark Connector py4j.protocol.Py4JJavaError:Der opstod en fejl under opkald til o50.load

  3. hvordan man kører samlet forespørgsel i mongodb-klient på RockMongo eller mViewer

  4. Sådan importeres data til mongoDB