UNPKG

sails-mongo-cloud

Version:

Mongo DB adapter for Sails.js/Waterline. Forked from sails-mongo and updated with Mongodb Driver v4.9.1

84 lines (56 loc) 2.81 kB
var _ = require('@sailshq/lodash'); module.exports = { friendlyName: 'Release connection', description: 'Release an active database connection.', extendedDescription: 'Depending on the implementation of this driver, this might release the connection back into the pool or close it entirely. Regardless, if the provided connection has a transaction started, be sure to end the transaction by either committing it or rolling it back before releasing the connection.', sync: true, inputs: { connection: { description: 'An active database connection.', extendedDescription: 'The provided database connection instance must still be active. Only database connection instances created by the `getConnection()` machine in this driver are supported.', example: '===', required: true }, meta: { friendlyName: 'Meta (custom)', description: 'Additional stuff to pass to the driver.', extendedDescription: 'This is reserved for custom driver-specific extensions. Please refer to the documentation for the driver you are using for more specific information.', example: '===' } }, exits: { success: { description: 'The connection was released and is no longer active.', extendedDescription: 'The provided connection may no longer be used for any subsequent queries.', outputFriendlyName: 'Report', outputDescription: 'The `meta` property is reserved for custom driver-specific extensions.', // outputExample: { // meta: '===' // } outputExample: '===' }, badConnection: { description: 'The provided connection is no longer active; or possibly never was.', extendedDescription: 'Usually, this means the connection to the database was lost due to a logic error or timing issue in userland code. In production, this can mean that the database became overwhelemed or was shut off while some business logic was in progress.', outputFriendlyName: 'Report', outputDescription: 'The `meta` property is reserved for custom driver-specific extensions.', // outputExample: { // meta: '===' // } outputExample: '===' } }, fn: function (inputs, exits) { // If the connection doesn't have a `close` function for some reason, // then catch that ahead of time so we can provide a slightly nicer // error message and help prevent confusion. if (!_.isObject(inputs.connection.client) || !_.isFunction(inputs.connection.client.close)) { return exits.badConnection(); } // This is a no-op function because the cursor and the pool automatically // releases the connection back into the pool once the query has run. return exits.success({ meta: inputs.meta }); } };