Как создать несколько документов в Mongoose за один запрос - PullRequest
0 голосов
/ 25 сентября 2018

Как мне создать несколько документов с разными схемами в одном запросе REST API в Node / Mongoose / Express?

Скажем, например, мне нужно создать пользователя и сайт по одному запросу, скажемнапример, /createUser.

Конечно, я мог бы создать пользователя, а затем в возвращенном обещании создать следующую запись, но что, если эта вторая запись не соответствует проверке?Затем я создал пользователя без второй записи.

User.create(userData)
    .then(user => {
        Site.create(siteData)
            .then(site => {
                // Do something
            })
            .catch(err => {
                console.log(err)
                // If this fails, I'm left with a user created without
                // a site.
            })
    })
    .catch(err => {
        console.log(err)
    })

Есть ли хорошая практика, которой следует следовать при создании нескольких подобных документов?Стоит ли вместо этого запускать ручную проверку перед каждым запуском .create ()?Любое руководство / совет будет очень признателен!

1 Ответ

0 голосов
/ 25 сентября 2018

У вас есть проблема транзакции здесь.Вы пытаетесь записать в две разные модели, но хотите, чтобы вся операция была атомарной, и в случае сбоя любой из них вам необходимо выполнить откат.Вплоть до тех пор, пока транзакции mongo 4.0 не поддерживались mongo, и обходными путями для таких проблем были двухфазные коммиты .Теперь в Монго 4.0 у нас есть транзакций , чтобы справиться с такими проблемами.

Надеюсь, это помогло.

...