Tag: postgresql

如何在Node.JS应用程序中支持PostgreSQL和SQL Server?

我目前正在开发一个Node.js应用程序,需要能够在PostgreSQL和SQL Server数据库之间切换。 两个数据库都有相同的表,操作也是相同的(基本的CRUD,没什么奇特的)。 我已经完成了研究,并且知道有足够的库来访问这两个数据库。 理想情况下,我想使用ORM,只是让它处理差异。 但是,我似乎无法find一个两者兼而有之的ORM框架。 实际上,我找不到任何支持SQL Server的ORM,而几乎所有的支持Postgres。 所以我的问题:是否有一个支持两者的ORM? 如果没有,那么还有其他的抽象工具/框架会让我的开发人员生活更轻松吗?

将Sequelize连接到安装了Homebrew的Postgres

我正在尝试使用Sequelize连接到我本地安装的Postgres。 我通过自制程序安装它,并确认我可以连接和查询数据库就好了。 当我运行Sequelize它输出有效的查询(我通过控制台运行它们),但数据库不会更改,并不logging任何连接。 我目前的代码是: var sequelize = new Sequelize('reliable_rabbit', 'mohammad', null, { host: "127.0.0.1", dialect: 'postgres', define: { timestamps: true, paranoid: true, underscore: true }//, }); 我可以通过以下方式连接到数据库: psql -d reliable_rabbit -U mohammad -h 127.0.0.1 。 我正在使用Sequelize版本1.5.0-beta 。 编辑: 在我的入口点(app / app.js)中,什么都不logging: var models = require('./models'); models.Post.sync().success(function(){ console.log("Success!") }).error(function(error){ console.log("Error: " + error); }); 应用程序/ models.js: […]

有什么Node.js库的SQL(特别是postgres)分片?

使用Mongo或类似的东西时,分片不是问题。 有什么解决scheme分割古典SQL基地,特别是PostgreSQL?

在2个独立的数据中心同步2个NodeJS实例和PostgresSQL

我们目前有一个NodeJS程序从套接字中收集数据,该套接字从一个其他服务发送实时信息。 然后这个数据被存储在上述实例中的数据库中。 这个过程只是听stream。 将对象parsing出来,然后用这些信息更新数据库。 另一个服务可以简单地从数据库中读取数据。 这是我们的用户对信息进行的调查。 我的问题是: 我如何确保这个代码的2个实例正在运行,并保持运行在2个独立的数据中心? 所以如果有一个实例出现故障,则只需开始更新数据库。 当我们修复另一个过程。 在这里,我在想: 正在考虑运行2个PosgresSQL服务器,每个数据中心一台。 在主和备用模式下运行。 这将使两个数据中心的Web服务能够从数据库中读取数据,但在主服务器还在运行时不会更新它。 给我唯一一个我想要的更新。 但另一个问题是如果NodeJS实例死亡。 那么我无法知道? 我可以实施一个心跳系统,但必须有一个更好的? 同时考虑运行带有队列的Rabbit MQ服务,但这给我一个单点故障。 一直在思考这一点,但似乎无法find一个可行的架构。 有什么build议?

不能使用带有Node.js和Postgres的参数化SQL语句

自从昨晚以来,我一直在用这个东西敲打我的头。 当我将参数添加到SQL,它不起作用。 var findOne = function(username, cb) { pg.connect(pgURL, function(err, client, done) { var query = client.query('SELECT * FROM users WHERE username = $1', [username]); done(); query.on('row', function(row) { cb(err, row); }); }); }; 但是,如果我做一个没有参数化的SQL语句,它工作得很好。 var query = client.query("SELECT * FROM users WHERE username = 'foobar'"); 另外,在done()之后执行console.log(query)会产生以下结果: 13:48:00 web.1 | { domain: null, 13:48:00 web.1 […]

错误:没有参数$ 1

当我尝试使用node-postgres客户端运行此代码时,出现“错误:没有参数$ 1”: app.post('/newcause', function (req,res){ console.log(req.body); var g; var r = []; for (g in req.body) { r[g]=req.body[g]; console.log('r[g] is ' + r[g]); } client = pg.connect(connectionString, function(err, client, done){ if(err) console.log(err); client.query('INSERT INTO causes (cause_name, goal, organization, sponsor, submitter) VALUES ($1,$2,$3,$4,$5)', r, function(err){ console.log('This is r' + r) if (err) console.log(err); }); }); }); […]

如何使用Sequelize for node.js和Heroku Postgres脚本同步和迁移操作?

Sequelize示例build议在app.js server.listen()之前执行此操作,这似乎太有限制了。 你将如何脚本更复杂的同步或迁移?

将自定义types的数组传递给来自node-pg和SQL注入的postgres函数

CREATE TYPE phototable AS ( photoid integer, parentid integer, fileextension character varying(20), description text, tag character varying(100) ); CREATE FUNCTION addphotos( p_placeid integer , p_permissiontypeid integer , p_description text DEFAULT NULL::text , p_photos phototable[] DEFAULT NULL::phototable[]) BEGIN …….. END 我通过生成一个SQL查询从node.js(使用node-postres)调用这个函数。 我想避免它,并希望使用参数化查询,因为我认为这是不安全的SQL注入攻击。 我无法find一种方法将自定义types数组传递给node-postgres的查询方法。 有没有办法将自定义types数组传递给node-postgres的查询function? 查询: select * from addphotos(p_placeid:=2210, p_permissiontypeid:=2, p_description:='Party', p_photos:=array[row(null, null,'.JPG','smart','6e8f74b2-4c14-4f40-ae19-8abae026a539'), row(null, null,'.JPG',null,'c4e9f75f-25fa-4893-82f1-44c4791d58e5')]::phototable[]);

Sequelize hasOne将不允许多行共享相同的关系

我遇到了使用Postgres驱动程序的sails.js问题: "dependencies": { "sequelize": "^1.7.0", "pg": "^3.0.3" } 我有一个活动模型,与2个模型有一个hasOne关系,属于另一个: classMethods: { associate: function(models) { Activity.hasOne(models.Model2); Activity.hasOne(models.Model3); Activity.belongsTo(models.User); } } 我遇到的问题是我似乎无法创build共享相同的Model2或Model3行/实例的2个活动实例。 我宣布第一个: Activity.create({}).complete(function(err, activity) { if(err) throw err; activity.setUser(User_Instance_X) activity.setModel2(Model2_Instance_X); activity.setModel3(Model3_Instance_X); activity.save().complete(db_save_cb); } 如果我然后声明另一个,使用相同的Model2和Model3实例,但不同的用户,则第一行/实例不再包含对Model2&3的引用,只有最新的行/实例包含该引用。 这是令人费解的function? 这是我的缺乏理解或错误?

使用sequelize,你如何使用or运算符与where标准?

从以前的SO讨论中,我能够用两个条件更新多个续集实例。 任何人都可以解释如何使用逻辑OR运算符而不是AND运算符来修改sequelize .update方法吗? 以下是使用AND进行更新的两种情况的续集更新方法。 global.db.Task.update( {Desc: 'New Upate'}, //set attribute {cd: 'match', Desc: null} //where criteria ).success(function(affectedRows) { … }); 这将读取一个SQL语句如下: UPDATE "Task" SET "Desc"='New Update' WHERE "Cd"='match' AND "Desc" IS NULL