MongoDB 4.0 поддерживает транзакции, а Mongoose предлагает реализацию начиная с версии 5.12.В моем конкретном сценарии использования я разрабатываю схемы для простого блогового приложения с 2 коллекциями: Authors
и Posts
:
Авторы
_id: ID!
firstName: String!
lastName: String!
posts: [Posts]
Сообщений
_id: ID!
title: String!
content: String!
author: { _id: ID!, firstName: String!, lastName: String! }
Вот очень упрощенный процесс при создании нового сообщения:
- Сохранение данных сообщения (
_id
, title
, content
, author{_id, firstName, lastName}
) до Posts
коллекции. - Извлечение
_id
, автоматически сгенерированного для вставки в шаге 1. - Обновление
Authors
коллекциис _id
, полученным на шаге 2 для его поля posts[]
.
Эти две операции, конечно, должны быть транзакционными.Итак, если шаг 1 не пройден, то должен шаг 3 , и наоборот.Тем не менее, моя задача - шаг 2 .Как извлечь значение автоматически сгенерированного поля _id
из одной операции для использования в другой в настройке транзакции?Извините, если этот вопрос уже был задан или имеет супер простое решение, которое каким-то образом ускользает от меня.Любой толчок в правильном направлении?
Используя сторонний плагин fawn , я легко могу сделать что-то вроде authors.posts[n]._id: {$ojFuture: "0._id"}
.Есть ли альтернатива этому, используя только мангуст?Причина, по которой я ищу альтернативы, заключается в том, что fawn
, похоже, не поддерживается активно, поскольку MongoDB отказался от ACID-совместимой версии 4.0, и в последнее время выдает кучу предупреждений об устаревании.