MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

tidak dapat memperbarui dokumen melalui 'findById' dan save() dengan janji

Akan mempertimbangkan untuk memecah operasi menjadi potongan-potongan yang dapat dikelola. Dalam hal ini Anda ingin memperbarui showTakenSeats field dengan data posisi tiket dari orde baru.

Pertama, menggunakan async menunggu dengan rute ekspres Anda, Anda perlu menyimpan pesanan dan mendapatkan dokumen pesanan yang dibuat. Buat dokumen dengan kursi yang baru diambil lalu perbarui dokumen pertunjukan menggunakan findByIdAndUpdate metode.

Contoh berikut menjelaskan hal di atas:

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 membuat alias dalam kueri

  2. Bidang agregat MongoDB dalam array objek

  3. Gunakan lebih dari satu skema per koleksi di mongodb

  4. Luwak:cara menggunakan agregat dan menemukan bersama

  5. Bagaimana cara mengembalikan format tanggal ISO dalam PHP untuk MongoDB?