Tag: knex.js

通过Winstondebuggingdebug.js输出

在我的公司,我们已经为自己的日志使用了Winston一段时间,但是处理使用debugjs的其他库的日志变得很麻烦,比如Knex.js. 我们一直在想如果有人通过Winston来pipeKnex的debugging输出,但是不能拿出任何东西。 什么是最好的方式,让一切通过温斯顿伐木者? 干杯!

PostgreSQL – 返回多个任意子查询的结果

像问题的标题所示,我试图采取一些任意的子查询,并将它们组合成一个单一的大型查询。 理想情况下,我想将数据作为单个logging返回,每列是其中一个子查询的结果。 例如 | sub-query 1 | sub-query 2 | … |—————–|—————–|—————– | (array of rows) | (array of rows) | … 子查询本身是在Node应用程序中使用Knex.js构build的,完全是任意的。 我已经相当接近一个适当的解决scheme,但我遇到了一个障碍。 我目前的实现有这样的最后一个查询: SELECT array_agg(sub0.*) as s0, array_agg(sub1.*) as s1, … FROM (…) as sub0, (…) as sub1, … ; 其中大部分工作,但在输出中导致大量的重复。 在我的testing过程中,我发现它会返回logging,这样每个logging的重复次数就等于没有重复logging的情况下将返回多lesslogging。 例如,应该返回10个logging的子查询将返回100(每个logging被重复10次)。 我还没有弄清楚为什么会发生这种情况,或者如何解决查询问题。 到目前为止,我只能确定: 单独查询时,子查询返回的logging数是正确的 副本不是由子查询之间的交集造成的 即子查询包含其他子查询中存在的行 提前致谢。

用knex.js插入嵌套logging

我们有一个数据库模式如下: students表 | id | 名字| 地址| 一个学生有多个教育历史。 education_histories表 | id | 度| 大学| student_id | student_id是指向学生表的外键 我们从客户端获得JSON结构,如下所示: { "name" :"Ram Neupane", "address": "Kathmandu, Bagmati", "education_histories": [ { "degree": "I.Sc.", "university": "Tribhuvan University" }, { "degree": "BE", "university": "Tribhuvan University" } ] } 我是Node.js和Knex.js的新手 。 我想用Knex的蓝鸟承诺在数据库中插入student和嵌套的education history 。 我怎么解决这个问题。 我已经尝试了以下诺言: function create (jsonParam) { return […]

将数组数据批量插入到使用objection.js的mysql数据库中

我有一个数组 newData = [{ sId: 'XXXXXX', itemlName: 'LSストレッ', iCode: 'XXXXXX', iType: '', skus: 'XXXXXXX', iLevel: 'L2', cCode: '88', cName: 'Other', sCode: '999', sName: 'No Control', pLengthCode: '988', core: 'N', sCode: '1', dCode: 'XX', gDeptCode: 'XX', gDeptName: 'Women\\\'s Items', rCode: 'jqs' },{ sId: 'XXXXXX', itemlName: 'LSストレッ', iCode: 'XXXXXX', iType: '', skus: 'XXXXXXX', iLevel: 'L2', cCode: '88', […]

Knex在插入后parsing空集

我试图在Node中使用Postgresql和Knex设置一个基本的数据库连接,但我很难得到一个简单的插入工作。 我将大部分代码放在Knex github库中的代码示例中。 这个问题似乎是我的第一个插入(我添加pipe理员用户)正在解决一个空的行集(不太确定,因为文档没有包含行或行集上的任何信息,只要我可以find)。 这是我的代码: const knex = require("knex")({ client: "postgres", connection: { host : "127.0.0.1", user : "postgres", password : "my password goes here", database : "issue-tracker", charset : "utf8" } }); knex.schema .dropTableIfExists("tickets") .dropTableIfExists("users") .createTable("users", createUserTable) .createTable("tickets", createTicketTable) .then(() => addTestData()) .then(() => console.log("Done")) .catch((e) => console.log(e)); function createUserTable(table) { table.increments("id"); table.string("username").index().unique(); table.string("password"); […]

Node.js knex – 确保用于login到数据库的密码

我在一个名为knexfile.js的文件中有下面的代码 module.exports = { development: { client: 'mysql', connection: { database: 'myDatabase', timezone: 'Z', user: 'root', password: 'myPassword', host: '127.0.0.1' }, pool: { min: 2, max: 10 }, migrations: { tableName: 'myMigrationTable' } } }; 上面的代码myPassword是纯文本的。 在我的生产服务器上,我绝对不希望我的密码在我的应用程序用来validation我的数据库的代码中。 我也不希望它在我的服务器上以明文forms存放在文件中。 在knex或node中有没有方法可以轻松地安全地login到我的数据库? 我应该只是简单地encryption我的密码,将其保留在我的服务器上的文件,并使用我的webapplogin时解密它?

从knex.js中的现有查询中select

我build立一个查询使用knex.js ,给定一个现有的子查询。 在这个答案和这个线程在GitHub中,我尝试了以下内容: const knex = require("knex")({client: 'pg'}); const subQuery = knex.queryBuilder().select(1); const query = knex.queryBuilder().select('*').from(subQuery); console.log(query.toString()); 但结果是: select * from select 1 这显然有一个语法错误。 我的预期结果是: select * from (select 1) 为什么不添加括号,我该如何改变它?

未处理的承诺拒绝 – 错误:发送后无法设置标头

我是新来的节点,我有一个简单的情况,我张贴到节点/快递应用程序的端点。 问题是我得到: POST /api/v2/user 500 25.378 ms – 54 (node:19024) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Can't set headers after they are sent. (node:19024) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. 我所拥有的相关代码是: router.post('/', (req, res, […]

重复的键值违反了唯一的约束 – 使用KnexJS和Postgresql

我目前正在使用KnexJS框架构build一个应用程序,该框架可以帮助我在开发中编写sqlite3,在生产中编写postgresql(用于Heroku)。 我的主要问题是,我的应用程序在我的机器上正常工作,但只要我上传到heroku它打破。 在Heroku日志中,我收到消息: { error: insert into "contracts" ("contract_desc", "contract_header", "owner_id", "signee_id") values ($1, $2, $3, $4) – duplicate key value violates unique constraint "contracts_pkey" 这使我无法将数据插入到我的数据库中。 我的Knex迁移表的设置是这样的: exports.up = function(knex, Promise) { return knex.schema.createTable('contracts', function (table) { table.increments('id').primary() table.integer('owner_id') table.integer('signee_id') table.string('contract_header') table.text('contract_desc') table.string('signature_url') table.string('date_signed') table.boolean('isSigned') }) }; exports.down = function(knex, Promise) { return knex.schema.dropTable('contracts') }; […]

用Objection.js中的多对多插入

我有以下怀疑,我无法在objection.js文档中find清楚的答案。 我有以下2个模型: export class Language extends BaseId { name: string; static tableName = 'Languages'; static jsonSchema = { type: 'object', required: ['name'], properties: { name: { type: 'string', minLength: 1, maxLength: 80 } } }; } export class Country extends BaseId { name: string; languages: Language[]; static tableName = 'Countries'; static jsonSchema = { type: […]