npm install fib-pool [--save]npm run ciSimple example.
var db = require("db");
var Pool = require("fib-pool");
var p = Pool(() => {
return db.open("sqlite:test.db");
});Specify maxsize and timeout.
var db = require("db");
var Pool = require("fib-pool");
var p = Pool(() => {
return db.open("sqlite:test.db");
}, 10, 30 * 1000);Specify custom destroy function.
var db = require("db");
var Pool = require("fib-pool");
var p = Pool({
create: () => {
return db.open("sqlite:test.db");
},
destroy: (o) => {
o.close()
},
timeout: 30 * 1000,
retry: 3
});var db = require("db");
var Pool = require("fib-pool");
var p = Pool({
create: () => {
return db.open("sqlite:test.db");
},
destroy: (o) => {
o.close()
},
timeout: 30 * 1000,
retry: 3
});
var res = p((conn) => {
conn.execute("select * from test");
});var db = require("db");
var Pool = require("fib-pool");
var p = Pool({
create: (name) => {
return db.open("sqlite:" + name + ".db");
},
destroy: (o) => {
o.close()
},
timeout: 30 * 1000
});
var res = p("test", (conn) => {
conn.execute("select * from test");
});By default, the pool uses strict mode to prevent accessing pooled objects outside of the callback function. This helps prevent resource leaks and ensures proper resource management.
var Pool = require("fib-pool");
var p = Pool({
create: () => {
return { value: 1, getValue: function() { return this.value; } };
}
});
var leaked;
p((obj) => {
leaked = obj;
// This works inside the pool callback
console.log(obj.getValue()); // OK
});
// This will throw an error: "access object outside of pool scope"
leaked.getValue(); // Error!When strict mode is enabled, it also prevents:
- Setting properties on pooled objects
- Calling
close(),destroy(), ordispose()methods directly
To disable strict mode:
var p = Pool({
create: () => {
return { value: 1 };
},
strict: false
});Simple example.
var db = require("db");
var Pool = require("fib-pool");
var p = Pool(() => {
return db.open("sqlite:test.db");
});
p.clear();