{"id":20085050,"url":"https://github.com/joris-van-der-wel/node-pg-large-object","last_synced_at":"2025-05-06T01:32:39.886Z","repository":{"id":15534179,"uuid":"18268831","full_name":"Joris-van-der-Wel/node-pg-large-object","owner":"Joris-van-der-Wel","description":"Large object support for PostgreSQL clients using the node-postgres library.","archived":false,"fork":false,"pushed_at":"2021-01-11T01:07:52.000Z","size":33,"stargazers_count":32,"open_issues_count":4,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-09T21:13:36.853Z","etag":null,"topics":["buffer","javascript","largeobject","nodejs","postgres","postgresql","promises","stream","transaction"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Joris-van-der-Wel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-03-30T17:03:51.000Z","updated_at":"2024-07-07T15:03:59.000Z","dependencies_parsed_at":"2022-08-26T19:01:11.749Z","dependency_job_id":null,"html_url":"https://github.com/Joris-van-der-Wel/node-pg-large-object","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joris-van-der-Wel%2Fnode-pg-large-object","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joris-van-der-Wel%2Fnode-pg-large-object/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joris-van-der-Wel%2Fnode-pg-large-object/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joris-van-der-Wel%2Fnode-pg-large-object/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Joris-van-der-Wel","download_url":"https://codeload.github.com/Joris-van-der-Wel/node-pg-large-object/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224480486,"owners_count":17318303,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["buffer","javascript","largeobject","nodejs","postgres","postgresql","promises","stream","transaction"],"created_at":"2024-11-13T15:54:33.924Z","updated_at":"2024-11-13T15:54:34.592Z","avatar_url":"https://github.com/Joris-van-der-Wel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"node-pg-large-object\n====================\nLarge object support for PostgreSQL clients using the [node-postgres](https://www.npmjs.org/package/pg) library.\n\nThe API of this library resembles the JDBC library for PostgreSQL.\n\nInstallation\n------------\n\n```\nnpm install --save pg-large-object\n```\n\nYou will also need to install either the [pg](https://www.npmjs.org/package/pg) library, or the [pg-promise](https://www.npmjs.org/pg-promise) library:\n\n```\nnpm install --save pg\n# or\nnpm install --save pg-promise\n```\n\nSome of the methods in this library require PostgreSQL 9.3 (server) and up:\n* LargeObject.seek()\n* LargeObject.tell()\n* LargeObject.size()\n* LargeObject.truncate()\n\nAll other methods should work on PostgreSQL 8.4 and up.\n\nLarge Objects\n-------------\nLarge Objects in PostgreSQL lets you store files/objects up to 4 TiB in size. The main benefit\nof using Large Objects instead of a simple column is that the data can be read and written in\nchunks (e.g. as a stream), instead of having to load the entire column into memory.\n\nExamples\n--------\nThe easiest way to use this library is in combination with promises and [pg-promise](https://www.npmjs.org/pg-promise). This\nlibrary exposes a callback style interface (for backwards compatibility) and a promise style\ninterface (see [API Documentation](#api-documentation)). All functions that end with \"Async\" will return a promise\n\n### Reading a large object using a stream and pg-promise:\n```javascript\nconst pgp = require('pg-promise')();\nconst {LargeObjectManager} = require('pg-large-object');\nconst {createWriteStream} = require('fs');\n\nconst db = pgp('postgres://postgres:1234@localhost/postgres');\n\n// When working with Large Objects, always use a transaction\ndb.tx(tx =\u003e {\n  const man = new LargeObjectManager({pgPromise: tx});\n\n  // A LargeObject oid, probably stored somewhere in one of your own tables.\n  const oid = 123;\n\n  // If you are on a high latency connection and working with\n  // large LargeObjects, you should increase the buffer size.\n  // The buffer should be divisible by 2048 for best performance\n  // (2048 is the default page size in PostgreSQL, see LOBLKSIZE)\n  const bufferSize = 16384;\n\n  return man.openAndReadableStreamAsync(oid, bufferSize)\n  .then(([size, stream]) =\u003e {\n    console.log('Streaming a large object with a total size of', size);\n\n    // Store it as an image\n    const fileStream = createWriteStream('my-file.png');\n    stream.pipe(fileStream);\n\n    return new Promise((resolve, reject) =\u003e {\n      stream.on('end', resolve);\n      stream.on('error', reject);\n    });\n  });\n})\n.then(() =\u003e {\n  console.log('Done!');\n})\n.catch(error =\u003e {\n  console.log('Something went horribly wrong!', error);\n});\n```\n\n### Creating a new large object using a stream and pg-promise:\n\n```javascript\nconst pgp = require('pg-promise')();\nconst {LargeObjectManager} = require('pg-large-object');\nconst {createReadStream} = require('fs');\n\nconst db = pgp('postgres://postgres:1234@localhost/postgres');\n\n// When working with Large Objects, always use a transaction\ndb.tx(tx =\u003e {\n  const man = new LargeObjectManager({pgPromise: tx});\n\n  // If you are on a high latency connection and working with\n  // large LargeObjects, you should increase the buffer size.\n  // The buffer should be divisible by 2048 for best performance\n  // (2048 is the default page size in PostgreSQL, see LOBLKSIZE)\n  const bufferSize = 16384;\n\n  return man.createAndWritableStreamAsync(bufferSize)\n  .then(([oid, stream]) =\u003e {\n    // The server has generated an oid\n    console.log('Creating a large object with the oid', oid);\n\n    const fileStream = createReadStream('upload-my-file.png');\n    fileStream.pipe(stream);\n\n    return new Promise((resolve, reject) =\u003e {\n      stream.on('finish', resolve);\n      stream.on('error', reject);\n    });\n  });\n})\n.then(() =\u003e {\n  console.log('Done!');\n})\n.catch(error =\u003e {\n  console.log('Something went horribly wrong!', error);\n});\n```\n\n\n### Reading a large object using a stream and callbacks:\n\n```javascript\nvar pg = require('pg');\nvar LargeObjectManager = require('pg-large-object').LargeObjectManager;\nvar conString = \"postgres://postgres:1234@localhost/postgres\";\n\npg.connect(conString, function(err, client, done)\n{\n  if (err)\n  {\n    return console.error('could not connect to postgres', err);\n  }\n\n  var man = new LargeObjectManager({pg: client});\n\n  // When working with Large Objects, always use a transaction\n  client.query('BEGIN', function(err, result)\n  {\n    if (err)\n    {\n      done(err);\n      return client.emit('error', err);\n    }\n\n    // A LargeObject oid, probably stored somewhere in one of your own tables.\n    var oid = 123;\n\n    // If you are on a high latency connection and working with\n    // large LargeObjects, you should increase the buffer size.\n    // The buffer should be divisible by 2048 for best performance\n    // (2048 is the default page size in PostgreSQL, see LOBLKSIZE)\n    var bufferSize = 16384;\n    man.openAndReadableStream(oid, bufferSize, function(err, size, stream)\n    {\n      if (err)\n      {\n        done(err);\n        return console.error('Unable to read the given large object', err);\n      }\n\n      console.log('Streaming a large object with a total size of', size);\n      stream.on('end', function()\n      {\n        client.query('COMMIT', done);\n      });\n\n      // Store it as an image\n      var fileStream = require('fs').createWriteStream('my-file.png');\n      stream.pipe(fileStream);\n    });\n  });\n});\n```\n\n\n### Creating a new large object using a stream:\n\n```javascript\nvar pg = require('pg');\nvar LargeObjectManager = require('pg-large-object').LargeObjectManager;\nvar conString = \"postgres://postgres:1234@localhost/postgres\";\n\npg.connect(conString, function(err, client, done)\n{\n  if (err)\n  {\n    return console.error('could not connect to postgres', err);\n  }\n\n  var man = new LargeObjectManager({pg: client});\n\n  // When working with Large Objects, always use a transaction\n  client.query('BEGIN', function(err, result)\n  {\n    if (err)\n    {\n      done(err);\n      return client.emit('error', err);\n    }\n\n    // If you are on a high latency connection and working with\n    // large LargeObjects, you should increase the buffer size.\n    // The buffer should be divisible by 2048 for best performance\n    // (2048 is the default page size in PostgreSQL, see LOBLKSIZE)\n    var bufferSize = 16384;\n    man.createAndWritableStream(bufferSize, function(err, oid, stream)\n    {\n      if (err)\n      {\n        done(err);\n        return console.error('Unable to create a new large object', err);\n      }\n\n      // The server has generated an oid\n      console.log('Creating a large object with the oid', oid);\n      stream.on('finish', function()\n      {\n        // Actual writing of the large object in DB may\n        // take some time, so one should provide a\n        // callback to client.query.\n        client.query('COMMIT', done);\n      });\n\n      // Upload an image\n      var fileStream = require('fs').createReadStream('upload-my-file.png');\n      fileStream.pipe(stream);\n    });\n  });\n});\n```\n\n### Using low level LargeObject functions:\n\n```javascript\nvar pg = require('pg');\nvar LargeObjectManager = require('pg-large-object').LargeObjectManager;\nvar LargeObject = require('pg-large-object').LargeObject;\nvar conString = \"postgres://postgres:1234@localhost/postgres\";\n\npg.connect(conString, function(err, client, done)\n{\n  if (err)\n  {\n    return console.error('could not connect to postgres', err);\n  }\n\n  var man = new LargeObjectManager({pg: client});\n\n  // When working with Large Objects, always use a transaction\n  client.query('BEGIN', function(err, result)\n  {\n    if (err)\n    {\n      done(err);\n      return client.emit('error');\n    }\n\n    // A LargeObject oid, probably stored somewhere in one of your own tables.\n    var oid = 123;\n\n    // Open with READWRITE if you would like to use\n    // write() and truncate()\n    man.open(oid, LargeObjectManager.READ, function(err, obj)\n    {\n      if (err)\n      {\n        done(err);\n        return console.error(\n          'Unable to open the given large object',\n          oid,\n          err);\n      }\n\n      // Read the first 50 bytes\n      obj.read(50, function(err, buf)\n      {\n        // buf is a standard node.js Buffer\n        console.log(buf.toString('hex'));\n      });\n\n      // pg uses a query queue, this guarantees the LargeObject\n      // will be executed in the order you call them, even if you do not\n      // wait on the callbacks.\n      // In this library the callback for methods that only return an error\n      // is optional (such as for seek below). If you do not give a callback\n      // and an error occurs, this error will me emit()ted on the client object.\n\n      // Set the position to byte 5000\n      obj.seek(5000, LargeObject.SEEK_SET);\n      obj.tell(function(err, position)\n      {\n        console.log(err, position); // 5000\n      });\n      obj.size(function(err, size)\n      {\n        console.log(err, size); // The size of the entire LargeObject\n      });\n\n      // Done with the object, close it\n      obj.close();\n      client.query('COMMIT', done);\n    });\n  });\n});\n```\n\nTesting\n-------\nYou can test this library by running:\n\n```\nnpm install pg-large-object\nnpm test\n```\n\nThe test assumes that postgres://nodetest:nodetest@localhost/nodetest is a valid database.\nYou also need to place a large file named \"test.jpg\" in the test folder.\n\nAPI Documentation\n-----------------\n## Modules\n\n\u003cdl\u003e\n\u003cdt\u003e\u003ca href=\"#module_pg-large-object\"\u003epg-large-object\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_pg-large-object/lib/LargeObject\"\u003epg-large-object/lib/LargeObject\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eRepresents an opened large object.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_pg-large-object/lib/LargeObjectManager\"\u003epg-large-object/lib/LargeObjectManager\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eThis class lets you use the Large Object functionality of PostgreSQL.\nAll usage of Large Object should take place within a transaction block!\n(BEGIN ... COMMIT)\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_pg-large-object/lib/promiseFromCallback\"\u003epg-large-object/lib/promiseFromCallback\u003c/a\u003e ⇒ \u003ccode\u003ePromise\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_pg-large-object/lib/ReadStream\"\u003epg-large-object/lib/ReadStream\u003c/a\u003e ⇐ \u003ccode\u003estream.Readable\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#module_pg-large-object/lib/WriteStream\"\u003epg-large-object/lib/WriteStream\u003c/a\u003e ⇐ \u003ccode\u003estream.Writable\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003c/dl\u003e\n\n\u003ca name=\"module_pg-large-object\"\u003e\u003c/a\u003e\n\n## pg-large-object\n\n* [pg-large-object](#module_pg-large-object)\n    * [.LargeObjectManager](#module_pg-large-object.LargeObjectManager) : \u003ccode\u003efunction\u003c/code\u003e\n    * [.LargeObject](#module_pg-large-object.LargeObject) : \u003ccode\u003efunction\u003c/code\u003e\n    * [.ReadStream](#module_pg-large-object.ReadStream) : \u003ccode\u003efunction\u003c/code\u003e\n    * [.WriteStream](#module_pg-large-object.WriteStream) : \u003ccode\u003efunction\u003c/code\u003e\n\n\u003ca name=\"module_pg-large-object.LargeObjectManager\"\u003e\u003c/a\u003e\n\n### pg-large-object.LargeObjectManager : \u003ccode\u003efunction\u003c/code\u003e\n[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\n\n**Kind**: static constant of \u003ccode\u003e[pg-large-object](#module_pg-large-object)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object.LargeObject\"\u003e\u003c/a\u003e\n\n### pg-large-object.LargeObject : \u003ccode\u003efunction\u003c/code\u003e\n[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\n\n**Kind**: static constant of \u003ccode\u003e[pg-large-object](#module_pg-large-object)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object.ReadStream\"\u003e\u003c/a\u003e\n\n### pg-large-object.ReadStream : \u003ccode\u003efunction\u003c/code\u003e\n[pg-large-object/lib/ReadStream](#module_pg-large-object/lib/ReadStream)\n\n**Kind**: static constant of \u003ccode\u003e[pg-large-object](#module_pg-large-object)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object.WriteStream\"\u003e\u003c/a\u003e\n\n### pg-large-object.WriteStream : \u003ccode\u003efunction\u003c/code\u003e\n[pg-large-object/lib/WriteStream](#module_pg-large-object/lib/WriteStream)\n\n**Kind**: static constant of \u003ccode\u003e[pg-large-object](#module_pg-large-object)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObject\"\u003e\u003c/a\u003e\n\n## pg-large-object/lib/LargeObject\nRepresents an opened large object.\n\n\n* [pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\n    * _instance_\n        * [.close([callback])](#module_pg-large-object/lib/LargeObject+close)\n        * [.closeAsync()](#module_pg-large-object/lib/LargeObject+closeAsync) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n        * [.read(length, callback)](#module_pg-large-object/lib/LargeObject+read)\n        * [.readAsync(length)](#module_pg-large-object/lib/LargeObject+readAsync) ⇒ \u003ccode\u003ePromise.\u0026lt;Buffer\u0026gt;\u003c/code\u003e\n        * [.write(buffer, [callback])](#module_pg-large-object/lib/LargeObject+write)\n        * [.writeAsync(buffer)](#module_pg-large-object/lib/LargeObject+writeAsync) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n        * [.seek(position, ref, [callback])](#module_pg-large-object/lib/LargeObject+seek)\n        * [.seekAsync(position, ref)](#module_pg-large-object/lib/LargeObject+seekAsync) ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\n        * [.tell(callback)](#module_pg-large-object/lib/LargeObject+tell)\n        * [.tellAsync()](#module_pg-large-object/lib/LargeObject+tellAsync) ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\n        * [.size(callback)](#module_pg-large-object/lib/LargeObject+size)\n        * [.sizeAsync()](#module_pg-large-object/lib/LargeObject+sizeAsync) ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\n        * [.truncate(length, [callback])](#module_pg-large-object/lib/LargeObject+truncate)\n        * [.truncateAsync(length)](#module_pg-large-object/lib/LargeObject+truncateAsync) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n        * [.getReadableStream([bufferSize])](#module_pg-large-object/lib/LargeObject+getReadableStream) ⇒ \u003ccode\u003e[pg-large-object/lib/ReadStream](#module_pg-large-object/lib/ReadStream)\u003c/code\u003e\n        * [.getWritableStream([bufferSize])](#module_pg-large-object/lib/LargeObject+getWritableStream) ⇒ \u003ccode\u003e[pg-large-object/lib/WriteStream](#module_pg-large-object/lib/WriteStream)\u003c/code\u003e\n    * _static_\n        * [.SEEK_SET](#module_pg-large-object/lib/LargeObject.SEEK_SET) : \u003ccode\u003eNumber\u003c/code\u003e\n        * [.SEEK_CUR](#module_pg-large-object/lib/LargeObject.SEEK_CUR) : \u003ccode\u003eNumber\u003c/code\u003e\n        * [.SEEK_END](#module_pg-large-object/lib/LargeObject.SEEK_END) : \u003ccode\u003eNumber\u003c/code\u003e\n    * _inner_\n        * [~closeCallback](#module_pg-large-object/lib/LargeObject..closeCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~readCallback](#module_pg-large-object/lib/LargeObject..readCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~writeCallback](#module_pg-large-object/lib/LargeObject..writeCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~seekCallback](#module_pg-large-object/lib/LargeObject..seekCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~tellCallback](#module_pg-large-object/lib/LargeObject..tellCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~sizeCallback](#module_pg-large-object/lib/LargeObject..sizeCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~truncateCallback](#module_pg-large-object/lib/LargeObject..truncateCallback) : \u003ccode\u003efunction\u003c/code\u003e\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+close\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.close([callback])\nCloses this large object. \n You should no longer call any methods on this object.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type |\n| --- | --- |\n| [callback] | \u003ccode\u003e[closeCallback](#module_pg-large-object/lib/LargeObject..closeCallback)\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+closeAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.closeAsync() ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nCloses this large object.\n You should no longer call any methods on this object.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObject+read\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.read(length, callback)\nReads some data from the large object.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| length | \u003ccode\u003eNumber\u003c/code\u003e | How many bytes to read |\n| callback | \u003ccode\u003e[readCallback](#module_pg-large-object/lib/LargeObject..readCallback)\u003c/code\u003e |  |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+readAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.readAsync(length) ⇒ \u003ccode\u003ePromise.\u0026lt;Buffer\u0026gt;\u003c/code\u003e\nReads some data from the large object.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n**Returns**: \u003ccode\u003ePromise.\u0026lt;Buffer\u0026gt;\u003c/code\u003e - The binary data that was read.\n         If the length of this buffer is less than the supplied\n         length param, there is no more data to be read.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| length | \u003ccode\u003eNumber\u003c/code\u003e | How many bytes to read |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+write\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.write(buffer, [callback])\nWrites some data to the large object.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| buffer | \u003ccode\u003eBuffer\u003c/code\u003e | data to write |\n| [callback] | \u003ccode\u003e[writeCallback](#module_pg-large-object/lib/LargeObject..writeCallback)\u003c/code\u003e |  |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+writeAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.writeAsync(buffer) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nWrites some data to the large object.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| buffer | \u003ccode\u003eBuffer\u003c/code\u003e | data to write |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+seek\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.seek(position, ref, [callback])\nSets the position within the large object.\nBeware floating point rounding with values greater than 2^53 (8192 TiB)\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| position | \u003ccode\u003eNumber\u003c/code\u003e |  |\n| ref | \u003ccode\u003eNumber\u003c/code\u003e | One of SEEK_SET, SEEK_CUR, SEEK_END |\n| [callback] | \u003ccode\u003e[seekCallback](#module_pg-large-object/lib/LargeObject..seekCallback)\u003c/code\u003e |  |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+seekAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.seekAsync(position, ref) ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\nSets the position within the large object.\nBeware floating point rounding with values greater than 2^53 (8192 TiB)\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n**Returns**: \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e - The new position  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| position | \u003ccode\u003eNumber\u003c/code\u003e |  |\n| ref | \u003ccode\u003eNumber\u003c/code\u003e | One of SEEK_SET, SEEK_CUR, SEEK_END |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+tell\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.tell(callback)\nRetrieves the current position within the large object.\nBeware floating point rounding with values greater than 2^53 (8192 TiB)\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type |\n| --- | --- |\n| callback | \u003ccode\u003e[tellCallback](#module_pg-large-object/lib/LargeObject..tellCallback)\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+tellAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.tellAsync() ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\nRetrieves the current position within the large object.\nBeware floating point rounding with values greater than 2^53 (8192 TiB)\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObject+size\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.size(callback)\nFind the total size of the large object.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type |\n| --- | --- |\n| callback | \u003ccode\u003e[sizeCallback](#module_pg-large-object/lib/LargeObject..sizeCallback)\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+sizeAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.sizeAsync() ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\nFind the total size of the large object.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObject+truncate\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.truncate(length, [callback])\nTruncates the large object to the given length in bytes.\nIf the number of bytes is larger than the current large\nobject length, the large object will be filled with zero\nbytes.  This method does not modify the current file offset.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type |\n| --- | --- |\n| length | \u003ccode\u003eNumber\u003c/code\u003e | \n| [callback] | \u003ccode\u003e[truncateCallback](#module_pg-large-object/lib/LargeObject..truncateCallback)\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+truncateAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.truncateAsync(length) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nTruncates the large object to the given length in bytes.\nIf the number of bytes is larger than the current large\nobject length, the large object will be filled with zero\nbytes.  This method does not modify the current file offset.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type |\n| --- | --- |\n| length | \u003ccode\u003eNumber\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+getReadableStream\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.getReadableStream([bufferSize]) ⇒ \u003ccode\u003e[pg-large-object/lib/ReadStream](#module_pg-large-object/lib/ReadStream)\u003c/code\u003e\nReturn a stream to read this large object.\nCall this within a transaction block.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| [bufferSize] | \u003ccode\u003eNumber\u003c/code\u003e | \u003ccode\u003e16384\u003c/code\u003e | A larger buffer size will  require more memory on both the server and client, however it will make  transfers faster because there is less overhead (less read calls to the server).  his overhead is most noticeable on high latency connections because each  ransfered chunk will incur at least RTT of additional transfer time. |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject+getWritableStream\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.getWritableStream([bufferSize]) ⇒ \u003ccode\u003e[pg-large-object/lib/WriteStream](#module_pg-large-object/lib/WriteStream)\u003c/code\u003e\nReturn a stream to write to this large object.\nCall this within a transaction block.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| [bufferSize] | \u003ccode\u003eNumber\u003c/code\u003e | \u003ccode\u003e16384\u003c/code\u003e | A larger buffer size will  require more memory on both the server and client, however it will make  transfers faster because there is less overhead (less read calls to the server).  his overhead is most noticeable on high latency connections because each  ransfered chunk will incur at least RTT of additional transfer time. |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject.SEEK_SET\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.SEEK_SET : \u003ccode\u003eNumber\u003c/code\u003e\nA seek from the beginning of a object\n\n**Kind**: static constant of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObject.SEEK_CUR\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.SEEK_CUR : \u003ccode\u003eNumber\u003c/code\u003e\nA seek from the current position\n\n**Kind**: static constant of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObject.SEEK_END\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject.SEEK_END : \u003ccode\u003eNumber\u003c/code\u003e\nA seek from the end of a object\n\n**Kind**: static constant of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObject..closeCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject~closeCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject..readCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject~readCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n| data | \u003ccode\u003eBuffer\u003c/code\u003e | The binary data that was read.        If the length of this buffer is less than the supplied        length param, there is no more data to be read. |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject..writeCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject~writeCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject..seekCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject~seekCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n| position | \u003ccode\u003eNumber\u003c/code\u003e | The new position |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject..tellCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject~tellCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n| position | \u003ccode\u003eNumber\u003c/code\u003e | The position |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject..sizeCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject~sizeCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n| size | \u003ccode\u003eNumber\u003c/code\u003e | Object size in bytes |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObject..truncateCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObject~truncateCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager\"\u003e\u003c/a\u003e\n\n## pg-large-object/lib/LargeObjectManager\nThis class lets you use the Large Object functionality of PostgreSQL.\nAll usage of Large Object should take place within a transaction block!\n(BEGIN ... COMMIT)\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| options | \u003ccode\u003eobject\u003c/code\u003e | Either `pg` or `pgPromise` must be given |\n| options.pg | \u003ccode\u003emodule:pg/Client\u003c/code\u003e | A pg (https://www.npmjs.com/package/pg) Client object |\n| options.pgPromise | \u003ccode\u003emodule:pg-promise/Task\u003c/code\u003e | A pg-promise (https://www.npmjs.com/package/pg-promise) transaction         object as given by `db.tx()` |\n\n**Example**  \n```js\nnew LargeObjectManager(client)\n```\n\n* [pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\n    * _instance_\n        * [.open(oid, mode, callback)](#module_pg-large-object/lib/LargeObjectManager+open)\n        * [.openAsync(oid, mode)](#module_pg-large-object/lib/LargeObjectManager+openAsync) ⇒ \u003ccode\u003e[Promise.\u0026lt;pg-large-object/lib/LargeObject\u0026gt;](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e\n        * [.create(callback)](#module_pg-large-object/lib/LargeObjectManager+create)\n        * [.createAsync()](#module_pg-large-object/lib/LargeObjectManager+createAsync) ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\n        * [.unlink(oid, [callback])](#module_pg-large-object/lib/LargeObjectManager+unlink)\n        * [.unlinkAsync(oid)](#module_pg-large-object/lib/LargeObjectManager+unlinkAsync) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n        * [.openAndReadableStream(oid, [bufferSize], callback)](#module_pg-large-object/lib/LargeObjectManager+openAndReadableStream)\n        * [.openAndReadableStreamAsync(oid, [bufferSize])](#module_pg-large-object/lib/LargeObjectManager+openAndReadableStreamAsync) ⇒ \u003ccode\u003ePromise.\u0026lt;Array\u0026gt;\u003c/code\u003e\n        * [.createAndWritableStream([bufferSize], [callback])](#module_pg-large-object/lib/LargeObjectManager+createAndWritableStream)\n        * [.createAndWritableStreamAsync([bufferSize])](#module_pg-large-object/lib/LargeObjectManager+createAndWritableStreamAsync) ⇒ \u003ccode\u003epromise.\u0026lt;Array\u0026gt;\u003c/code\u003e\n    * _static_\n        * [.WRITE](#module_pg-large-object/lib/LargeObjectManager.WRITE) : \u003ccode\u003eNumber\u003c/code\u003e\n        * [.READ](#module_pg-large-object/lib/LargeObjectManager.READ) : \u003ccode\u003eNumber\u003c/code\u003e\n        * [.READWRITE](#module_pg-large-object/lib/LargeObjectManager.READWRITE) : \u003ccode\u003eNumber\u003c/code\u003e\n    * _inner_\n        * [~openCallback](#module_pg-large-object/lib/LargeObjectManager..openCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~createCallback](#module_pg-large-object/lib/LargeObjectManager..createCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~unlinkCallback](#module_pg-large-object/lib/LargeObjectManager..unlinkCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~openAndReadableStreamCallback](#module_pg-large-object/lib/LargeObjectManager..openAndReadableStreamCallback) : \u003ccode\u003efunction\u003c/code\u003e\n        * [~createAndWritableStreamCallback](#module_pg-large-object/lib/LargeObjectManager..createAndWritableStreamCallback) : \u003ccode\u003efunction\u003c/code\u003e\n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+open\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.open(oid, mode, callback)\nOpen an existing large object, based on its OID.\nIn mode READ, the data read from it will reflect the \ncontents of the large object at the time of the transaction \nsnapshot that was active when open was executed, \nregardless of later writes by this or other transactions.\nIf opened using WRITE (or READWRITE), data read will reflect \nall writes of other committed transactions as well as \nwrites of the current transaction.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| oid | \u003ccode\u003eNumber\u003c/code\u003e |  |\n| mode | \u003ccode\u003eNumber\u003c/code\u003e | One of WRITE, READ, or READWRITE |\n| callback | \u003ccode\u003e[openCallback](#module_pg-large-object/lib/LargeObjectManager..openCallback)\u003c/code\u003e |  |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+openAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.openAsync(oid, mode) ⇒ \u003ccode\u003e[Promise.\u0026lt;pg-large-object/lib/LargeObject\u0026gt;](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e\nOpen an existing large object, based on its OID.\nIn mode READ, the data read from it will reflect the\ncontents of the large object at the time of the transaction\nsnapshot that was active when open was executed,\nregardless of later writes by this or other transactions.\nIf opened using WRITE (or READWRITE), data read will reflect\nall writes of other committed transactions as well as\nwrites of the current transaction.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| oid | \u003ccode\u003eNumber\u003c/code\u003e |  |\n| mode | \u003ccode\u003eNumber\u003c/code\u003e | One of WRITE, READ, or READWRITE |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+create\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.create(callback)\nCreates a large object, returning its OID. \nAfter which you can open() it.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type |\n| --- | --- |\n| callback | \u003ccode\u003e[createCallback](#module_pg-large-object/lib/LargeObjectManager..createCallback)\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+createAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.createAsync() ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\nCreates a large object, returning its OID.\nAfter which you can open() it.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n**Returns**: \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e - oid  \n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+unlink\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.unlink(oid, [callback])\nUnlinks (deletes) a large object\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type |\n| --- | --- |\n| oid | \u003ccode\u003enumber\u003c/code\u003e | \n| [callback] | \u003ccode\u003e[unlinkCallback](#module_pg-large-object/lib/LargeObjectManager..unlinkCallback)\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+unlinkAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.unlinkAsync(oid) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nUnlinks (deletes) a large object\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type |\n| --- | --- |\n| oid | \u003ccode\u003enumber\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+openAndReadableStream\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.openAndReadableStream(oid, [bufferSize], callback)\nOpen a large object, return a stream and close the object when done streaming.\nOnly call this within a transaction block.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type | Default |\n| --- | --- | --- |\n| oid | \u003ccode\u003eNumber\u003c/code\u003e |  | \n| [bufferSize] | \u003ccode\u003eNumber\u003c/code\u003e | \u003ccode\u003e16384\u003c/code\u003e | \n| callback | \u003ccode\u003e[openAndReadableStreamCallback](#module_pg-large-object/lib/LargeObjectManager..openAndReadableStreamCallback)\u003c/code\u003e |  | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+openAndReadableStreamAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.openAndReadableStreamAsync(oid, [bufferSize]) ⇒ \u003ccode\u003ePromise.\u0026lt;Array\u0026gt;\u003c/code\u003e\nOpen a large object, return a stream and close the object when done streaming.\nOnly call this within a transaction block.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n**Returns**: \u003ccode\u003ePromise.\u0026lt;Array\u0026gt;\u003c/code\u003e - The total size and a ReadStream  \n\n| Param | Type | Default |\n| --- | --- | --- |\n| oid | \u003ccode\u003eNumber\u003c/code\u003e |  | \n| [bufferSize] | \u003ccode\u003eNumber\u003c/code\u003e | \u003ccode\u003e16384\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+createAndWritableStream\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.createAndWritableStream([bufferSize], [callback])\nCreate and open a large object, return a stream and close the object when done streaming.\nOnly call this within a transaction block.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type | Default |\n| --- | --- | --- |\n| [bufferSize] | \u003ccode\u003eNumber\u003c/code\u003e | \u003ccode\u003e16384\u003c/code\u003e | \n| [callback] | \u003ccode\u003e[createAndWritableStreamCallback](#module_pg-large-object/lib/LargeObjectManager..createAndWritableStreamCallback)\u003c/code\u003e |  | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager+createAndWritableStreamAsync\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.createAndWritableStreamAsync([bufferSize]) ⇒ \u003ccode\u003epromise.\u0026lt;Array\u0026gt;\u003c/code\u003e\nCreate and open a large object, return a stream and close the object when done streaming.\nOnly call this within a transaction block.\n\n**Kind**: instance method of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n**Returns**: \u003ccode\u003epromise.\u0026lt;Array\u0026gt;\u003c/code\u003e - The oid and a WriteStream  \n\n| Param | Type | Default |\n| --- | --- | --- |\n| [bufferSize] | \u003ccode\u003eNumber\u003c/code\u003e | \u003ccode\u003e16384\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager.WRITE\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.WRITE : \u003ccode\u003eNumber\u003c/code\u003e\n**Kind**: static constant of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager.READ\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.READ : \u003ccode\u003eNumber\u003c/code\u003e\n**Kind**: static constant of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager.READWRITE\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager.READWRITE : \u003ccode\u003eNumber\u003c/code\u003e\n**Kind**: static constant of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager..openCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager~openCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n| result | \u003ccode\u003e[pg-large-object/lib/LargeObject](#module_pg-large-object/lib/LargeObject)\u003c/code\u003e |  |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager..createCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager~createCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n| oid | \u003ccode\u003eNumber\u003c/code\u003e |  |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager..unlinkCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager~unlinkCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager..openAndReadableStreamCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager~openAndReadableStreamCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n| size | \u003ccode\u003eNumber\u003c/code\u003e | The total size of the large object |\n| stream | \u003ccode\u003e[pg-large-object/lib/ReadStream](#module_pg-large-object/lib/ReadStream)\u003c/code\u003e |  |\n\n\u003ca name=\"module_pg-large-object/lib/LargeObjectManager..createAndWritableStreamCallback\"\u003e\u003c/a\u003e\n\n### pg-large-object/lib/LargeObjectManager~createAndWritableStreamCallback : \u003ccode\u003efunction\u003c/code\u003e\n**Kind**: inner typedef of \u003ccode\u003e[pg-large-object/lib/LargeObjectManager](#module_pg-large-object/lib/LargeObjectManager)\u003c/code\u003e  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| error | \u003ccode\u003eError\u003c/code\u003e | If set, an error occurred. |\n| oid | \u003ccode\u003eNumber\u003c/code\u003e |  |\n| stream | \u003ccode\u003e[pg-large-object/lib/WriteStream](#module_pg-large-object/lib/WriteStream)\u003c/code\u003e |  |\n\n\u003ca name=\"module_pg-large-object/lib/promiseFromCallback\"\u003e\u003c/a\u003e\n\n## pg-large-object/lib/promiseFromCallback ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n\n| Param | Type |\n| --- | --- |\n| fn | \u003ccode\u003efunction\u003c/code\u003e | \n| self | \u003ccode\u003eobject\u003c/code\u003e | \n| [options] | \u003ccode\u003eobject\u003c/code\u003e | \n\n\u003ca name=\"module_pg-large-object/lib/ReadStream\"\u003e\u003c/a\u003e\n\n## pg-large-object/lib/ReadStream ⇐ \u003ccode\u003estream.Readable\u003c/code\u003e\n**Extends:** \u003ccode\u003estream.Readable\u003c/code\u003e  \n\u003ca name=\"module_pg-large-object/lib/WriteStream\"\u003e\u003c/a\u003e\n\n## pg-large-object/lib/WriteStream ⇐ \u003ccode\u003estream.Writable\u003c/code\u003e\n**Extends:** \u003ccode\u003estream.Writable\u003c/code\u003e  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoris-van-der-wel%2Fnode-pg-large-object","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoris-van-der-wel%2Fnode-pg-large-object","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoris-van-der-wel%2Fnode-pg-large-object/lists"}