sql >> Base de Datos >  >> NoSQL >> MongoDB

soporte de transacciones mongodb 4.0 para node.js

Como también se menciona en el comentario, puede encontrar la referencia para las transacciones en node-mongodb-native v3.1 API ClientSession . Esto se debe a que las transacciones están asociadas a una sesión. Es decir, inicia una transacción para una sesión. En un momento dado, puede tener como máximo una transacción abierta para una sesión.

La documentación para Transacciones de documentos múltiples de MongoDB también contiene ejemplos Node.js fragmentos de código. Por ejemplo:

  session.startTransaction({
    readConcern: { level: 'snapshot' },
    writeConcern: { w: 'majority' }
  });

  const employeesCollection = client.db('hr').collection('employees');
  const eventsCollection = client.db('reporting').collection('events');

  await employeesCollection.updateOne(
    { employee: 3 },
    { $set: { status: 'Inactive' } },
    { session }
  );
  await eventsCollection.insertOne(
    {
      employee: 3,
      status: { new: 'Inactive', old: 'Active' }
    },
    { session }
  );

  try {
    await commitWithRetry(session);
  } catch (error) {
    await session.abortTransaction();
    throw error;
  }

La referencia de los métodos anteriores se puede encontrar en:

Además del controlador MongoDB Node.js v3.1, tenga en cuenta que las transacciones de varios documentos están disponibles para conjuntos de réplicas solo en MongoDB v4.0.x. Las transacciones para clústeres fragmentados están disponibles a partir de la versión v4.2.