Tag: postgresql

Postgresql捕捉事务错误和回滚

我正在使用pg-promise来运行我的SQL查询。 查询本身存储在外部的.sql文件中。 当我执行一个事务时,如果发生错误(如预期的那样),Postgres将中止事务。 我遇到的问题是,我试图在事务中止后尝试运行的任何单独的查询都不运行,而是我得到以下消息: “当前事务中止,命令被忽略,直到事务块结束” 。 如果查询是在psql控制台中运行的,我可以通过在查询失败后发出ROLLBACK来解决这个问题。 我不认为这是一个选项,因为我的应用程序使用的SQL位于外部文件。 我也不认为保存点是一个选项,因为如果失败了,整个事务应该被抛出。 如果发生此错误,我将如何在SQL文件中回滚? 这里是SQL的参考: BEGIN; DELETE FROM tournament_tossup_values WHERE tournament_id = $1 AND NOT EXISTS ( SELECT id FROM tournament_match WHERE tournament_id = $1 ); UPDATE tournament SET bonus_point_value = $5, parts_per_bonus = $6 WHERE id = $1 AND NOT EXISTS ( SELECT id FROM tournament_match WHERE tournament_id […]

在Sequelize中使用JOIN

提示如何在Sequelize中使用JOIN? 我有以下代码: db.User.findAll({ attributes: ['id'], where: {vipEnd: {lt: expiresVip}, vip: true}, limit: 100, order: 'id' }).then(function(users) { 4,看起来像这样: SELECT "vkId" AS "id" FROM "user" AS "user" WHERE "user"."vipEnd" < 1469699683 –expiresVip AND "user"."vip" = true ORDER BY id LIMIT '100'; 如何实现这样的结果? SELECT "vkId" AS "id" FROM "user" AS "user" LEFT JOIN "notification" ON "notification"."userId" = […]

电子邮件地址作为表名称,如何使用准备/“安全”的声明?

(在这里插入通常的“我没有太多的SQL经验”)。 我有一个负责发送大量电子邮件的系统,而且我添加了保存每个电子邮件logging的function,由收件人隔离。 现在我正在设置它,以便这些电子邮件日志将插入一张表,其电子邮件是表名。 然而现在,它看起来像Node.js的pg库不允许使用表名作为准备语句的一部分。 我的问题有两个方面,a)我应该关注注射能力名称是否基于电子邮件地址? 和b)如果是这样,我怎么能在这里解决安全问题? 我目前处理这个的例子: function _upsertTable(email, cb) { // Normalize email address. var tableName = 'email."' + email.toLowerCase() + '"'; client.query([ ("CREATE TABLE IF NOT EXISTS " + tableName), "(", "htmlMessage text,", "textMessage text,", "templateId character(24),", "files oid", ")" ].join(' '), cb); } // Insert email record into table function _recordEmail(email, cb) […]

使用具有Sequelize(ORM)的Node.js中现有的Postgres-DB,

我在Node.js和Postgres中很新手,我的问题很简单: 有可能使用Sequelize同步现有的Postgres-DB(包含表(和数据)),而不重写模型和关系? CRUD基本操作如何? 提前致谢!

如何从数据库检索数据,并将其转为我的情况下的对象?

我正在使用postgres row_to_json函数来获取通过JSON.stringify()存储的数据。 但是,当我检索它并做JSON.parse() ,它给了我“ unexpected token , ”错误消息。 我从前端的原始数据: { "company":[ {"name":"test company"}, {"ceo":"John"} ] } 我做JSON.stringify(myData.company)并将其存储到postgres。 当我检索它时,我有row_to_json函数来获取数据。 和console.log(myRetrieveData)成为 {"{\"name\":\"test company\"}","{\"ceo\":\"John\"}"} 我使用JSON.parse(myRetrieveData)并得到“ unpexted token , ”错误。 我明白row_to_json把它变成json,不能用在JSON.parse但是这个函数是我的其他数据需要的。 我不知道如何解决这个问题。 任何人都可以帮助我吗? 非常感谢!

在Nodejs和Postgres中input错误

我正在根据postgres提供的对象列表生成dynamic更新查询。 这是我的查询看起来像: update loan_item_assignment as t set id = c.id, dateselectionid = c.dateselectionid, loanitemid = c.loanitemid, active = c.active, type = c.type from (values ( $1, $2, $3, $4, $5 ), ( $6, $7, $8, $9, $10 ), ( $11, $12, $13, $14, $15 ), ( $16, $17, $18, $19, $20 ), ( $21, $22, […]

在与database-nodeJS的连接上同步elasticsearch

目标 :将elasticsearch与postgres数据库同步 为什么 :有时候新networking或群集/服务器会中断,以便将来的更新应该被logging 本文https://qafoo.com/blog/086_how_to_synchronize_a_database_with_elastic_search.htmlbuild议我应该创build一个单独的表updates ,它将同步elasticsearch的id ,允许从上一条logging(在elasticsearch中)select新的数据(从数据库)。 所以我想如果我可以loggingelasticsearch的失败和成功的连接:如果client成功返回(返回一个承诺),我可以启动一个函数来同步logging与我的数据库。 这是我的elasticConnect.js import elasticsearch from 'elasticsearch' import syncProcess from './sync' const client = new elasticsearch.Client({ host: 'localhost:9200', log: 'trace' }); client.ping({ requestTimeout: Infinity, hello: "elasticsearch!" }) .then(() => syncProcess) // successful connection .catch(err => console.error(err)) export default client 这样,我甚至不用担心运行cron作业(如果问题1是正确的),因为我知道集群正在运行。 问题 syncProcess会在export default client之前运行吗? 我不想在同步时进入任何请求… syncProcess只能运行一次(因为它被caching/不导出),无论我import多less次elasticConnect.js 。 正确? 使用updates表的方法是否有任何优势,而不是从父/源表中select数据? […]

全部用Loopback更新

我喜欢Loopback,但这是logging不完善/意外的东西。 我想要使​​用这个function: http://apidocs.strongloop.com/loopback/#persistedmodel-updateall 我假设 PUT /models 将调用Model.updateAll()function。 上面的HTTP请求是标准的开箱即用的东西,即环回的东西。 我想find的是后端function,如Model.updateAll和API的URL之间的映射。 换句话说,我怎么知道是否 PUT /Dogs ~ Dogs.updateAll() 这里没有1:1映射吗? 如果是这样,为什么没有很好的logging?

NodeJS / Sequelize / MySQL – 为什么需要postgres依赖关系?

我是Node和Sequelize的新手,我正在build立与MySQL数据库的连接。 我想知道为什么Postgres依赖关系是需要的,即使将方言设置为mysql。 如能帮助我指出问题,我将不胜感激。 来自packages.json "dependencies": { // … "mysql2": "1.1.2", "sequelize": "3.27.0" }, 我试图连接数据库的方式: var Sequelize = require('sequelize'); var sequelize = new Sequelize('dbName', 'dbUser', 'dbPass', { host: 'localhost', dialect: 'mysql' }); sequelize.authenticate() .then(function(err) { console.log('Connection has been established successfully.'); }) .catch(function (err) { console.log('Unable to connect to the database:', err); }); 我正面临的错误: Failed to compile. […]

在将节点中的logging保存到nodejs中的postgres之前,异议js模型字段数据修剪

我正在使用objection.js ORM为我的node.js项目。 一切都很好,我想在实际保存PostGres数据库表中的数据之前修剪所有的字段。 我也在一些项目中使用mongoose,它允许在模型中定义{trim:true}。 我正在为参考添加一个示例模型代码: // @flow import Model from './Model'; import Transaction from './Transaction'; import dbMap from './dbMap'; export default class ClaimCode extends Model { amount: number; claimId: number; code: string; codeDate: Date; presentOnAdmission: string; throughDate: Date; claimCodeTypeId: number; static tableName = 'claim_code'; } dbMap(ClaimCode, {}); 我们有没有办法在异议JS模型中做同样的事情?