Mon goose и Asyn c не сохранялись соответственно - PullRequest
0 голосов
/ 01 августа 2020

Я пытался использовать async await для сохранения одного или нескольких mon goose документа, после того, как весь документ был сохранен, позвоните find(), чтобы получить весь сохраненный документ и зарегистрировать его

В первый раз, когда я сохраняю документ, все распечатывается соответственно

, но при втором сохранении ввод был в неправильном порядке

Изображение> Красный цвет второе сохранение

Это мой код

app.post('/quotes', async (req, res) => {
    if (req.isAuthenticated()) {

        const author = req.user.id;
        const requestedSession = mongoose.Types.ObjectId()

        const quotations = req.body;
        const quoteCount = req.body.name.length;
        const isArray = Array.isArray(quotations.name);
        
            
            function createQuote() {
                
                if (isArray) {
                    for (var i = 0; i < quoteCount; i++) {
                        const quote = new Quote({
                            author: author,
                            sessionID: requestedSession,
                            datestamp: dateStamp(),
                            timestamp: timeStamp(),
                            name: quotations.name[i],
                            type: quotations.type[i],
                            quantity: quotations.quantity[i],
                            price: quotations.price[i],
                            total: quotations.total[i],
                        });
                        quote.save()
                    } return

                } else if (!isArray) {
                    const quote = new Quote({
                        author: author,
                        sessionID: requestedSession,
                        datestamp: dateStamp(),
                        timestamp: timeStamp(),
                        name: quotations.name,
                        type: quotations.type,
                        quantity: quotations.quantity,
                        price: quotations.price,
                        total: quotations.total,
                    });
                    quote.save()
                }       
            }

           
            try {
                createQuote()
                const getquote = await Quote.find({sessionID: requestedSession})
                console.log(getquote)
            } catch (error) {
                console.log(error)
            }

            res.redirect('/main');

    } else {
        res.redirect('/login');
    }
});

Кроме того, в моем журнале консоли второй журнал состоял только из 1 элемента

[
  {
    _id: 5f24b68ba5a9226c60e948cb,
    author: 5f1b84dddf112c5a0404a600,
    sessionID: 5f24b68ba5a9226c60e948ca,
    datestamp: '07/31/2020',
    timestamp: '17:25:47',
    name: '1',
    type: 'exterior-props',
    quantity: 1,
    price: 1,
    total: 1,
    __v: 0
  },
  {
    _id: 5f24b68ba5a9226c60e948cc,
    author: 5f1b84dddf112c5a0404a600,
    sessionID: 5f24b68ba5a9226c60e948ca,
    datestamp: '07/31/2020',
    timestamp: '17:25:47',
    name: '2',
    type: 'interior-props',
    quantity: 2,
    price: 2,
    total: 2,
    __v: 0
  },
  {
    _id: 5f24b68ba5a9226c60e948cd,
    author: 5f1b84dddf112c5a0404a600,
    sessionID: 5f24b68ba5a9226c60e948ca,
    datestamp: '07/31/2020',
    timestamp: '17:25:47',
    name: '3',
    type: 'exterior-props',
    quantity: 3,
    price: 3,
    total: 3,
    __v: 0
  },
  {
    _id: 5f24b68ba5a9226c60e948ce,
    author: 5f1b84dddf112c5a0404a600,
    sessionID: 5f24b68ba5a9226c60e948ca,
    datestamp: '07/31/2020',
    timestamp: '17:25:47',
    name: '4',
    type: 'exterior-props',
    quantity: 4,
    price: 4,
    total: 4,
    __v: 0
  },
  {
    _id: 5f24b68ba5a9226c60e948cf,
    author: 5f1b84dddf112c5a0404a600,
    sessionID: 5f24b68ba5a9226c60e948ca,
    datestamp: '07/31/2020',
    timestamp: '17:25:47',
    name: '5',
    type: 'plubming-system',
    quantity: 5,
    price: 5,
    total: 5,
    __v: 0
  },
  {
    _id: 5f24b68ba5a9226c60e948d0,
    author: 5f1b84dddf112c5a0404a600,
    sessionID: 5f24b68ba5a9226c60e948ca,
    datestamp: '07/31/2020',
    timestamp: '17:25:47',
    name: '6',
    type: 'paint-work',
    quantity: 6,
    price: 6,
    total: 6,
    __v: 0
  },
  {
    _id: 5f24b68ba5a9226c60e948d1,
    author: 5f1b84dddf112c5a0404a600,
    sessionID: 5f24b68ba5a9226c60e948ca,
    datestamp: '07/31/2020',
    timestamp: '17:25:47',
    name: '7',
    type: 'plubming-system',
    quantity: 7,
    price: 7,
    total: 7,
    __v: 0
  }
]
[
  {
    _id: 5f24b6c2a5a9226c60e948d5,
    author: 5f1b84dddf112c5a0404a600,
    sessionID: 5f24b6c2a5a9226c60e948d2,
    datestamp: '07/31/2020',
    timestamp: '17:26:42',
    name: '10',
    type: 'paint-work',
    quantity: 10,
    price: 10,
    total: 10,
    __v: 0
  }
]

Спасибо заранее для помощи и предложений

...