Articles of knex.js

knex.js多个更新optmised

现在我正在做我的工作stream的方式是这样的: 从一个postgres数据库获取行列表(比如说10.000) 对于每一行我需要调用一个API端点并获得一个值,所以从API返回的10.000值 对于每一行我有一个值返回我需要更新数据库中的字段。 10.000行更新 现在我正在做每个API获取后的update ,但你可以想象这不是最优化的方式。 我还有什么其他的select?

如果数据库连接closures或数据库服务器closures,会立即执行查询会发生什么情况

假设这个简单的查询。 var knex = require("knex")(knexConfig); var insert1 = {col1: "a4", col2: "b4", col3: "c4"}; knex.insert(insert1).into("test").then(function (id) { console.log(id); }) .finally(function() { knex.destroy(); }); 执行插入查询后,如果数据库服务器closures或连接立即closures会发生什么情况 它存储数据并返回错误或不存储数据并返回错误?

电子knex的sqlite处理

我有一些电子应用程序的问题,用knexjs和sqlite响应。 我在节点脚本上使用knex和sqlite数据库文件,这也负责电子引导。 当我从“电子”命令运行应用程序,从控制台一切正常,应用程序工作和数据库是好的。 但是,当我打包电子包装应用程序崩溃的应用程序开始(没有任何错误)。 当我删除部分knex处理负责与sqlite文件应用程序连接工作… knex bootstraping看起来像这样: let knex = require("knex")({ client: "sqlite3", connection: { //when i comment this line app does not crash filename: path.join(app.getPath('userData'), 'database.sqlite') } }); 你有什么想法可能是错的?

如何使用knex.js使用事务

我有使用knex在数据库表中input多个logging,但我没有任何回应。 我的代码如下: addApi : (data,CustomerId) => { knex.transaction(function(trx) { knex('books').transacting(trx).insert({name: 'Old Books'}) .then(function(resp) { var id = resp[0]; return someExternalMethod(id, trx); }) .then(trx.commit) .catch(trx.rollback); }) .then(function(resp) { console.log('Transaction complete.'); }) .catch(function(err) { console.error(err); }); }

为什么Knex.js以数组的forms返回max('value')?

我想从表中find最大值: knexClient .queryBuilder() .withSchema('myschema') .from('mytable') .where({some_query}) .max('value'); 它以单个元素的数组forms返回所需的值:[{max:1000}] 为什么它会返回一个数组,而不仅仅是一个数字或一个对象?

内联删除查询,Node JS,Knex JS

这个查询工作: var query = knex('project_member') .join('project', 'project_member.pm_project', '=', 'project.prj_id') .join('users', 'project_member.pm_user', '=', 'users.us_id') .where({ prj_number: inputs.params.prj_number }) .select('pm_project', 'us_name', 'us_alias'); query.toString()给出: select "pm_project", "us_name", "us_alias" from "project_member" inner join "project" on "project_member"."pm_project" = "project"."prj_id" inner join "users" on "project_member"."pm_user" = "users"."us_id" where "prj_number" = '4026305' 此查询不起作用: var query = knex('project_member') .join('project', 'project_member.pm_project', '=', 'project.prj_id') .where({ […]

knex.js – 阅读然后更新抛出一个错误

我试图链阅读和更新操作。 首先,我从数据库中读取(获取)基于id的数据 ,然后更改它并希望更新数据库中的数据,但是我得到了Unhandled rejection Error: There is no pool defined on the current client错误Unhandled rejection Error: There is no pool defined on the current client 。 index.js var id = args.id; var proj = new Project(id); proj.read(knex).then(function(rows) { proj.set(args); proj.update(knex).then(console.log); // <== ERROR THROWN HERE }); Project.js (只有相关的function) read(knex) { var self = this; return […]

Knex Js从原始SQL返回不同的输出

我有两张桌子。 一个是分类表,另一个是一个项目表,带有一个外键来分类(一个分类可以有多个项目) 我试图从下面的代码公开所有项目 router.route('/projects') .get(function(req,res){ //knex('projects').select(['projects.id','projects.name','projects.category_id','categories.name']).innerJoin('categories','projects.category_id','categories.id') knex.from('projects').innerJoin('categories','projects.category_id','categories.id') .then(function(collection){ console.log(collection); res.json({ error:false, data: collection }) }) .catch(function(err){ res.json({ error:true, data:{ message:err.message } }) }) }) 两个knex语句几乎都返回类似于下面的截断输出 { "error": false, "data": [ { "id": 1, "name": "Music", "category_id": 1, "created_at": 1458126413858 }, { "id": 2, "name": "Science", "category_id": 2, "created_at": 1458126413858 } ] } 但是,原始的SQL似乎是正确的 select * […]

用chai发送一个POST请求发送一个空的正文?

我现在有以下设置 test.js var user = { username: 'test_user', email: 'test@test.me', password: 'you shall not pass', address: 'No where street' }; chai.request(app) .post('/api/v1/users') .send(user); 我正在处理我的routes / user.js中的发布请求 router.post('/', function(req, res, next) { console.log('body: ' + req.body); queries.insertUser(req.body) .then(function(id) { return queries.getSingleUser(id); }) .then(function(user) { res.status(200).json(user); }) .catch(function(err) { next(err); }); }); req.body最后是未定义的。 任何线索可能会出错? 如果有人想看看,代码是https://ide.c9.io/burtonium/node-from-scratch 。

从Knex中检索连接池(与express-mysql-session共享)

我已经configuration了knexconfiguration使用MySQL的池: var knex = require("knex")({ client: "mysql", connection: { host: …, user: …, password: …, database: … }, pool: { min: 0, max: 20 } }); 我也使用快速会议 ,我正在计划切换到商店express-mysql-session 。 所以,我想使用knex创build的连接池,所以我可以使用相同的池来访问所有数据库。 有没有办法从knex获得连接池,我可以传递给MySQL会话存储的构造函数? 或者其他方式来使用相同的一切?