Node-postgres:命名参数query(nodejs)

我用我的SQL查询命名我的参数时,准备实际的原因,如在PDO的PHP。

那么我可以使用node-postgres模块的命名参数吗?

现在,我在互联网上看到很多示例和文档,显示如下的查询:

client.query("SELECT * FROM foo WHERE id = $1 AND color = $2", [22, 'blue']); 

但这是否正确?

 client.query("SELECT * FROM foo WHERE id = :id AND color = :color", {id: 22, color: 'blue'}); 

或这个

 client.query("SELECT * FROM foo WHERE id = ? AND color = ?", [22, 'blue']); 

我问这是因为编号的参数$n ,在dynamic构build查询的情况下不能帮助我。

我一直在使用nodejs和postgres。 我通常执行这样的查询:

 client.query("DELETE FROM vehiculo WHERE vehiculo_id= $1", [id], function (err, result){ //Delete a record in de db if(err){ client.end();//Close de data base conection //Error code here } else{ client.end(); //Some code here } }); 

有一个图书馆 ,你正在尝试做什么。 就是这样:

 var sql = require('yesql').pg client.query(sql("SELECT * FROM foo WHERE id = :id AND color = :color")({id: 22, color: 'blue'})); 

一种解决方法是使用参数装载SQL:

 var id = 1, color = 'blue'; var sql = "SELECT * FROM foo WHERE id = " + id + " AND color = '" + color + "'"; client.query(sql); 

或者,请尝试这个:

 var data = {id: req.body.id, color: req.body.color}; client.query("SELECT * FROM foo WHERE id=($1) AND color=($2)", [data.id, data.color]);