我尝试在Node上使用Knex.js.js通过以下代码:
var Promise = require("bluebird");
var knex = require("knex")({
client: 'pg',
user : 'username',
database : 'database',
password: "password",
migrations: {
tableName: 'knex_migrations'
},
pool: {
min: 0,
max: 7
}
});
knex.select("*").from("users").then(function(rows){
console.log(rows);
});
但是,它抛出了一个关于Runner
对象的错误,如下所示:
/path/to/myapp/node_modules/knex/lib/interface.js:27
return new Runner(this).run().then(onFulfilled, onRejected);
^
TypeError: undefined is not a function
at QueryBuilder_PG.Target.then (/path/to/myapp/node_modules/knex/lib/interface.js:27:12)
at Object.<anonymous> (/path/to/myapp/test.js:14:32)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
当我尝试使用stream
、pipe
、exec
和transaction
时,发生了同样的错误。
请告诉我如何解决这个问题...
我真的很粗心地对待客户端的配置。我对"连接"的描述是错误的。它必须写成如下:
var Promise = require("bluebird");
var knex = require("knex")({
client: 'pg',
connection: {
host : '127.0.0.1',
user: 'username',
database: 'database',
password: 'password'
},
migrations:{
tableName:"knex_migrations"
},
pool: {
min: 0,
max: 7
}
});
knex.select("*").from("users").then(function(rows){
console.log(rows);
});
它工作没有问题。
谢谢!