我有一个node.js模块pg-promise
实例化如下。
const pgp = require('pg-promise')();
// Database connection details;
const cn = {
host: 'localhost', // 'localhost' is the default;
...
}
// Create db connection and verify it
var db = pgp(process.env.DATABASE_URL || cn);
db.one('Select version()')
.then(data => {
log.info('Connected: ', data);
})
.catch(error => {
log.error("Error connecting to db", error);
})
// extension methods
db.findById = function (table, id) {
log.debug('read ', table, id);
return db.one('Select * from ' + table + ' where id = $1', id);
}
module.exports = db;
db 对象是接口(interface)类型 pgPromise.IDatabase<{}, pg.Iclient>
的实例
我希望能够调用该库提供的函数以及我自己的函数。:
const db = require('../db');
db.any('Select query..')
.then(data => { res.send(data); })
.catch(err => { log.error(err); });
db.findById('users',1)
.then(data => { res.send(data); })
.catch(err => { log.error(err); });
但是当我运行它时,我收到错误
TypeError: db.findById is not a function
我也尝试过,但效果相同。
module.exports = db;
module.exports.findById = function()...;
我能想到的唯一解决方案是:
module.exports = {
db: db,
findById: function(){
...
}
}
但现在使用其他模块很难看,因为我总是需要专门询问 db
属性。
我是一名优秀的程序员,十分优秀!