MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

не може да актуализира документ чрез 'findById' и save() с обещание

Бих обмислил разделянето на операцията на управляеми части. В този случай бихте искали да актуализирате showTakenSeats поле с данните за позициите на билета от новата поръчка.

Първо, като използвате async await с вашия експресен маршрут, трябва да запазите поръчката и да получите създадения документ за поръчка. Създайте документ с новите заети места и след това актуализирайте документа за шоу, като използвате findByIdAndUpdate метод.

Следният пример описва горното:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Вмъкнете в mongodb с perl

  2. docker-compose връзка на java приложение към mongodb

  3. Възстановете база данни MongoDB с помощта на mongorestore

  4. Как да използвам MongoDB Ruby Driver, за да направя група (групиране по)?

  5. Вмъкнете множество JSON файлове в MongoDB с помощта на python