Tag: postgresql

如何一次插入两张表? 准备好陈述

如何一次插入两个表? 我需要插入第二个表user_information字段user_id与第一个表user插入返回id ,我发现这个答案,但我找不到如何与params准备语句 var dbQuery = 'WITH insertUser AS ( INSERT INTO "user" (status, create_date) VALUES ($1, $2) RETURNING id ) , insertUserInformation AS ( INSERT INTO user_information (user_id, email) VALUES ($3, $4) ) '; yield queryPromise(dbClient, dbQuery, [status, timestamp, ??, email]); 皮克

out参数结果由节点pg module – postgresql返回

我已经在postgresql中创build了一个过程如下。 CREATE OR REPLACE FUNCTION public.functiontest2( IN data numeric, OUT result numeric, OUT result1 numeric) RETURNS record AS $BODY$ DECLARE declare SEQVAL decimal := 10; BEGIN result=SEQVAL; result1=data; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; 现在我已经从节点pg执行了这个程序 client.query('select functionTest2(10)', input, function(err, result){}); 以前,当我执行上面的代码时,它给了我以下格式的结果。 { "command":"SELECT", "rowCount":1, "oid":null, "rows":[{"result":"10"},{"result1":"10"}], "fields":[{"name":"result","tableID":0,"columnID":0,"dataTypeID":1700,"dataTypeSize":-1,"dataTypeModifier":-1,"format":"text"}], "_parsers":[null], "rowAsArray":false } 但是现在我已经卸载了节点pg模块并重新安装了节点pg模块。 这是给我以下格式的结果 { "command":"SELECT", […]

PostgreSQL和nodejs / pg,返回嵌套的JSON

我使用PostgreSQL和nodejs和pg。 一切工作正常,但我想从PostgreSQL输出一个嵌套的JSON的结果 – 就像我正在使用MongoDB或类似的。 我从PostgreSQL 2表是: portfolio (id int, name text) cars (portfolio_id int, name text); 有没有一个“正确”的方式返回一个JSON对象的结构如下: { { name: 'Portfolio #1', cars: { name: 'Car #1', name: 'Car #2' }, { name: 'Portfolio #2', cars: { name: 'Car #3' } } 我在nodejs / pg中查询数据库的一般方法是: client.query('SELECT …', [params], function(err, result) { done(); if (err) { […]

Postgres和Sequelize – 无法读取未定义的属性“名称”

我正在尝试在一个正在MySQL上运行良好的项目更改数据库到Postgres。 运行迁移时(收到sync和sequelize db:migrate),我收到以下错误消息。 /myProject/node_modules/pg/lib/connection.js:109 self.emit(msg.name, msg); ^ TypeError: Cannot read property 'name' of undefined at Socket.<anonymous> (/myProject/node_modules/pg/lib/connection.js:109:20) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:172:18) at Socket.Readable.push (_stream_readable.js:130:10) at TCP.onread (net.js:542:20) 我只隔离了这个简单的模型,但是我仍然得到错误 module.exports = (sequelize, DataTypes) => { var User = sequelize.define('User', { email: { type: DataTypes.STRING, validate: { isEmail: true } }, googleId: […]

TypeError:无法读取未定义的属性“findAll”

我正在开发一个使用angularjs,nodejs和postgresql的web应用程序。 我在我的数据库中有两个表,一个用于库存,另一个用于客户端。 我结合我的index.js文件,在我的路线文件夹,其中两个表都有一个findAll函数。 当我把这两个表的引用index.js,一次只有一个工作。 这里是两个表使用的模板,包括findAll: exports.getobjects = function(req, res) { models.Object.findAll().then(function(objectss){ res.json(objects); }); }; 有没有人做了我想要做的事情? 更新:这里是整个index.js文件: /* * GET home page. */ var models = require("../models"); exports.index = function(req, res) { res.render('index', { title : 'title' }); }; /* clients */ exports.getclients = function(req, res) { models.Client.findAll().then(function(clients){ res.json(clients); }); }; exports.saveclients = function(req, res) { […]

在pg-promise中使用.batch参数列表

我正在运行nodejs和pg-promise,并且希望使用批处理函数来创build一个包含多个UPDATE的BEGIN和COMMIT事务。 这是我的代码: db.tx(function (t) { return this.batch(function() { for (var i = 0; i < cars.length; i++) { return db.any('UPDATE … ', [car_id, cars[i].votes]); } }); }) 但是,似乎没有任何事情发生。 是不是可以像这样创build我的批处理列表?

如何使用node.js在AWS RDS PostgreSQL上实现callback

我试图在与AWS RDS Postgresql进行交互的NodeJS EC2服务器上实现callback。 我不太确定它是如何完成的。 AWS-SDK的RDS模块中似乎有一个EventEmitter方法。 它是专为所有的RDS实例types,如MySQL,极光等。不专门为Postgres。 所有我想要做的是在INSERT或DELETE查询后得到某种callback。

启动js,我们如何使用填充来编写内部连接

Sails的填充作为左连接工作。 我想做内联, 任何人都可以帮助我们如何使用填充来编写内部连接,而无需编写原始查询。 我正在使用MYSQL适配器。

如何使用Sequelize在JSONB字段上创buildUNIQUE约束

我在NodeJS中使用Sequelize ORM来pipe理postgreSQL数据库。 我在我的表中使用JSONB数据types,我需要JSONB字段上的索引和此JSON属性上的唯一约束。 如果我必须在这里做一个经典的SQL我的脚本: CREATE TABLE tableJson (id SERIAL PRIMARY KEY, content JSONB NOT NULL); CREATE INDEX j_idx ON tableJson USING gin(content jsonb_path_ops); CREATE UNIQUE INDEX content_name_idx ON tableJson(((content->>'name')::varchar)); 我发现如何使用INDEX创build表,但不知道如何处理UNIQUE约束。 以下是我的脚本示例: var tableJson = sequelize.define('tableJson', { content: Sequelize.JSONB }, { indexes: [{ fields: ['content'], using: 'gin', operator: 'jsonb_path_ops' } }); 有没有解决我的问题? 如果没有,我可能会使用sequelize.query方法来执行原始查询,但这不是非常演变。 任何帮助,将不胜感激!

创build一个unit testing两个检查两个psql模式是否相同

我有一个庞大的数据库模式,有时更新这个项目。 所以我有一个名为schema.sql的文件,它具有当前的模式,还有一个包含我随着时间的推移部署的所有补丁的目录(称为patches/20160710.sql ,带有名为origin.sql的第一个模式的文件)。 如果我进行全新安装,则使用schema.sql ,否则在更新时应用此修补程序。 在更新生产模式之前,我已经在testing服务器上进行testing,而且几乎所有东西都自动完成了。 到目前为止效果很好。 不幸的是,一旦我写了一个不同的东西去schema.sql和补丁。 我的unit testing只对一个新的数据库运行,所以testing没有失败,我发现这个错误只是我在testing服务器上的补丁。 我想编写一个unit testing,它接受schema.sql ,部署它,并将模式与在origin.sql应用的所有修补程序生成的模式进行比较。 我也需要检查一些表具有相同的值。 数据库是postgresql,软件在node.js中。 Gitlab CI使用自定义的Docker镜像来运行testing,所以我真的可以用任何语言来进行testing。 当然,补丁和schema.sql都有相同的数据库名称,所以我想我必须应用schema.sql ,以某种方式转储它,然后删除数据库并从补丁重新创build它,再次转储它并比较结果。 这种方法是否有意义或有更好的方法来实现我在做什么? 如果这是有道理的,转储两个数据库并比较它们的好方法是什么?