Tag: postgresql

如何避免在postgres数据库中插入空值

我有以下查询插入到多对多连接表中的数据 INSERT INTO playlist_genre(playlist_id, genre_id) VALUES (${playlistId}, ${genre1Id}), (${playlistId}, ${genre2Id}), (${playlistId}, ${genre3Id}) ); 但是我遇到的问题是genre2Id和genre3Id值不是用户所需要的,所以可以是INTEGER或NULL 。 我正在试图find一种方法来写这个相同的查询,但它只能插入如果存在一个值。 两列都有NOT NULL约束。 编辑 : 这是我的播放列表类 class Playlist { constructor(playlist) { // required fields this.title = playlist.title; this.playlistType = playlist.playlistType; this.userId = playlist.userId; this.numberOfTracks = playlist.numberOfTracks; this.lengthInSeconds = playlist.lengthInSeconds; this.genre1Id = playlist.genre1Id; // not required fields this.genre2Id = playlist.genre2Id || […]

定制泊坞窗图像不运行postgres

我正在尝试为circleci v2创build自己的自定义泊坞窗文件。 但是,我遇到了postgres服务器没有运行的问题。 我已经运行service postgresql start没有可用。 我得到的消息是: psql: could not connect to server: Connection refused Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? Dockerfile: FROM ubuntu:16.04 ENV NODEJS_VERSION 6 ENV POSTGRESQL_VERSION 9.6 RUN apt-get update && apt-get -y install curl RUN curl -sL https://deb.nodesource.com/setup_$NODEJS_VERSION.x | bash – RUN apt-key adv […]

保存数据的最佳方式是使用node.js每隔1秒到达Postgres

我正在使用node.js构build一个项目,该项目与其他4个系统集成,每隔1秒不断发送数据。 我想要有一个时间线,所以我需要保存的数据,但我不觉得这是正确的,每一秒点击几个插入语句。 保存冗余数据的最好方法是什么? 我正在考虑有一些日志文件,然后批量插入数据。 有什么build议么? 谢谢。

Postgres,Docker和Node.js – 密码身份validation失败(连接被拒绝或psql:FATAL:angular色“root”不存在)

我只是不知道为什么我不能使用Node.jslogin到Postgres user: postgres password: postgres host: 192.168.99.100 port: 5432 database: test_db 以下是导致错误的Node.js中的几行代码 error: password authentication failed for user "postgres" var pg = require('pg'); var conString = "postgres://postgres:postgres@192.168.99.100:5432/test_db"; var client = new pg.Client(conString); client.connect(); 我从Docker容器运行Postgres。 我启动了另一个容器,并可以使用以下命令成功访问数据库 psql -U postgres -d test_db -h 192.168.99.100 -W 此外我可以使用pgAdmin 4成功login 的pg_hba.conf # TYPE DATABASE USER ADDRESS METHOD # "local" is […]

使用pg-promiselogging特定的postgresql查询

我使用pg-promise包与Nodejs来执行PostgreSQL查询。 我想看看执行的查询。 只有特定的查询,比如说,我只想debugging一个查询。 我可以看到,一个推荐的方法是使用pg-monitor来捕获事件并按照这里在示例文档中提到的那样logging它们。 没有使用pg-monitor ,是否有一个简单的方法来打印执行准备好的查询。 我无法在文档中看到它。 例: db.query("SELECT * FROM table WHERE id = $/id/", {id: 2}) 如何打印这个查询产生? SELECT * FROM table WHERE id = 2

使用SQL返回参数为NULL的所有值?

我不确定什么是正确的方法来做到这一点。 我基本上想要返回所有的值,如果没有定义某个filter的值。 获取请求是这样的filter: url.com?filter1=abc&filter2=123&filter4=33 所以作为filter3没有定义我想要返回所有值,无论他们的filter3值是什么。 简单的逻辑权利。 但是,如果我尝试在SQL中实现,我卡住了。 SELECT * from TABLE_NAME WHERE filter1 = $1 AND filter2 = $2 AND filter3 = $3 AND filter4 = $4 。 我如何修改上面的SQL来响应未定义的/空值,并返回所有。 或者这是甚至是正确的策略。

儿童杂项模式的数据库devise

我想知道保持数据库尽可能整洁的最佳做法。 数据库是由express.js / node访问的postgresql。 这是一个孩子应用程序,我正在工作,它有以下架构: CHILDREN id name points rate created_at updated_at user_id TASKS id description value days (boolean array – eg. [0,0,0,0,0,0,0]) periods (boolean array – eg. [0,0]) created_at updated_at user_id FINISHED TASKS id task_id child_id completed (boolean) created_at updated_at period (boolean) day (int (0-6)) 对于每个完成的任务,在数据库中创build一行。 只有400个孩子在那里做家务,每天已经有大约800行被添加到FINISHED TASKS表格。 我有两个问题: 是否有一个更有效的方式来存储完成的FINISHED TASKS ,每个孩子或类似的一整天? 随着规模,我将最终每天可能成千上万的行 – […]

在nodejs中获取postgres-query的结果作为variables

我知道下面的代码在命令行中输出我的查询结果: query.on("row", function (row, result) { result.addRow(row); }); query.on("end", function (result, callback) { println(JSON.stringify(result)) }); 不过,我想在下面的代码中使用结果值作为variables,而不仅仅是打印到命令行。 更新:能够使用下一个查询的值是不够的,我希望它在查询范围之外: query.on("row", function (row, result) { result.addRow(row); }); query.on("end", function (result, callback) { println(JSON.stringify(result)) }); //use the result here 预先感谢您的答案。

重复的键值违反了唯一的约束 – 使用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') }; […]

Knex从多个表中select

我想用knex运行下面的SQL: select * from ( (select * from foo) union all (select * from bar)) as biz limit 10 offset 20; 有没有办法做到这一点没有knex.raw ?