Articles of knex.js

node_modules打包失败(Webpack或Browserify)

我试图捆绑我的node.js应用程序与webpack或browserify,但我需要一些后端模块,如knex,书架等。 但是webpack和browserify无法打包这些模块,因为他们用require()做了一些奇怪的事情… 我得到了这样的错误: Cannot find module 'sqlite3'或Error: Cannot find module './dialects/postgres/index.js' 我不能忽略我的node_modules目录,因为我需要包中的模块,因为我无法访问我的包将被使用的环境。 (AWS Lambda) 我不需要webpack或browserify来优化我的node_modules,但我需要它们,有没有办法告诉webpack或browserify只捆绑node_module文件夹,并相信我,如果需求缺失? 编辑:我使用无服务器来testing和部署我的lambda和唯一的插件,让我用babel强制我使用ES2015使用webpack / browserify 谢谢 :)

如何在Node.js(express)上返回由{}而不是包围的json返回使用knex和postgresql的查询结果

如果我做一个curl请求到我的node.js(EXPRESS)API curl http://127.0.0.1:3000/api/events/user/id/1我得到这个结果: [{"id":"1","name":"casamiento 1","description":"el casamiento del tio claudio","mode_id":1,"initial_date":"2016-05-28T22:14:57.000Z","end_date":"2016-05-28T22:14:58.000Z","state_id":1,"user_id":"1","location":"0101000020E61000000000000000805BC00000000000003E40"},{"id":"2","name":"casamiento 2","description":"el casamiento del tio claudio 2","mode_id":1,"initial_date":"2016-05-28T22:14:57.000Z","end_date":"2016-05-28T22:14:58.000Z","state_id":1,"user_id":"1","location":"0101000020E61000000000000000405BC00000000000003D40"},{"id":"3","name":"fiesta del sandwich de miga","description":"Nos juntamos a comer sandwiches de miga hasta reventar","mode_id":1,"initial_date":"2016-05-28T22:15:58.000Z","end_date":"2016-05-28T22:15:58.000Z","state_id":1,"user_id":"1","location":"0101000020E610000000000000000000000000000000804840"}] 我需要输出被大括号包围,如: {{"id":"1","name":"casamiento 1","description":"el casamiento del tio claudio","mode_id":1,"initial_date":"2016-05-28T22:14:57.000Z","end_date":"2016-05-28T22:14:58.000Z","state_id":1,"user_id":"1","location":"0101000020E61000000000000000805BC00000000000003E40"},{"id":"2","name":"casamiento 2","description":"el casamiento del tio claudio 2","mode_id":1,"initial_date":"2016-05-28T22:14:57.000Z","end_date":"2016-05-28T22:14:58.000Z","state_id":1,"user_id":"1","location":"0101000020E61000000000000000405BC00000000000003D40"},{"id":"3","name":"fiesta del sandwich de miga","description":"Nos juntamos a comer sandwiches de miga hasta reventar","mode_id":1,"initial_date":"2016-05-28T22:15:58.000Z","end_date":"2016-05-28T22:15:58.000Z","state_id":1,"user_id":"1","location":"0101000020E610000000000000000000000000000000804840"}} 我的模型“事件”文件是这样的查询,然后返回结果: var express […]

数组未被传递到knex中查询

我从一个get查询传递一个ID数组在哪里函数,但他们将失踪。 if(query.cols){ var cols = query.cols.map(Number); console.log(cols) search.whereIn('collection_id', cols) } 我将它们映射到整数的查询。 控制台日志是… [ 77, 66 ] 但debugging显示查询为… …and "collection_id" in (?, ?) 我错过了什么?

为什么knex迁移示例将Promise构造函数作为第二个parameter passing?

Knex使用迁移文件来应用或回滚数据库结构更改。 要创build一个新的迁移文件,例如,可以使用cli: knex migrate:make migration_name 这将在/migrations目录中生成一个文件,其中包含: exports.up = function(knex, Promise) { }; exports.down = function(knex, Promise) { }; 我的问题是,这是为什么将Promise作为一个论点? 我看到knex使得Bluebird内部使用量很大, 并将Promise传递给了迁移 。 那么,这就是前Promise无处不在的遗迹吗? 或者…有意识地覆盖es6实现,以便可以使用非标准方法(如tap和spread ? 任何清晰度将不胜感激。

Javascript – 将以前的查询结果传递到下一个.then()

我链接查询使用knex添加额外的数据到我的JSON返回对象。 然而,我似乎无法理解为什么我不能将一个knex.query的结果传递给第二个knex查询的.then()。 码: exports.getApps = function() { return new Promise(function(resolve, reject) { db.raw(` SELECT * FROM APPs WHERE VARAPP_PUBLIC_ACTIVE > 0 ORDER BY VARAPP_PUBLIC_ACTIVE ASC, VARAPP_NAME ASC `).then(function(results) { if (results[0].length > 0) { for (var i = 0; i < results[0].length; i++) { db.raw(` SELECT * FROM APPs_Features WHERE VARAPP_ID = ? ORDER BY […]

用knexjs创buildangular色

我是PostgreSQL和节点的新手。 我正在使用knex.js库。 我需要创buildangular色并将其分配给在PostgreSQL中创build的每个表。 我不知道我怎么能做到这一点。 是否在桌面迁移时完成? 或者我可以在迁移之后做到这一点? 如果是这样,我该怎么办呢?

select语句的子查询与Knex.js

我正在尝试使用Knex创build子查询的以下查询: SELECT t.*, (SELECT COUNT(*) FROM team_users tu WHERE TeamID = t.ID) AS UserCount, (SELECT COUNT(*) FROM team_access ta WHERE TeamID = t.ID) AS AppCount FROM teams t WHERE OwnerUserID = _UserID; 结果应该是来自不同表(team_users,team_access)的UserCount和AppCount的计数聚合的团队表, id | Name | OwnerUserID | UserCount | AppCount —————————————————– 134| Team A | 1538 | 7 | 6 135| Team B […]

使用knex.js在Node API混淆中编写插入语句

我有一个问题,我似乎无法将我的头围绕。 这是非常具体的Knex.JS实现,我敢肯定与PostgreSQL无关。 以下实现工作。 当插入适量(〜500报表)。 数额较大,由于其他原因而失败。 无论如何,以下对我的用例不起作用,我需要类似下一节的内容。 import knex = require("knex"); (function (items) { let db = knex.table("items"); db.truncate(); let foo = []; items.forEach(function(item) { foo.push({ id : item.id, item_data : JSON.stringify(item) }); }); db.insert(foo).then(function () { /*..*/ }); }(items)) 但是以下不是: import knex = require("knex"); (function (items) { let db = knex.table("items"); db.truncate(); let foo = […]

如何在Knexunit testing时模拟一个假数据库?

我一直使用Knex成功连接到后端数据库。 但是我想能够unit testing我的代码。 有没有办法模拟数据库连接? 我试过使用proxyquire,但我似乎无法得到它的工作。 问题似乎是Knex初始化的方式。 var knex = require('knex')({ client: 'mysql', connection: {} }); 我设置knex在我的unit testing中被嘲笑。 myService = proxyquire('../app/myService', { 'knex': knexProxy }); 我的服务包括knex。 var knex = require('knex').knex, 当我的服务运行查询时,它失败。 var sql = knex("table_name"); sql.insert(rowToInsert, "auto_increment_id"); sql.then(function (insertId) { resolve(); }, function (err) { reject(err); }); 出于某种原因,我似乎无法捕捉请求,然后再尝试连接。 我也尝试创build一个自定义的Knex客户端 ,但是这还没有奏效。

asynchronous等待或承诺不返回stream事件

我有以下函数返回一个Promise函数参数是一个asynchronous函数: createObjectFrom(record) { const self = this; return new Promise(async (resolve, reject) => { let obj = {}; for(let i = 0, l = self.opts.transformers.length; i < l; i++) { let transformer = self.opts.transformers[i]; const headerIndex = findIndex(self.headers, (header) => { return header === transformer.column; }); let csvValue = record[headerIndex]; const lookUp = transformer.options.lookUp; const […]