1. 程式人生 > >Nodejs對postgresql基本操作的封裝

Nodejs對postgresql基本操作的封裝

基於nodejs平臺對postgresql的增刪改查基本操作進行了封裝,能滿足基本的實際應用,比較複雜的SQL需另外實現。

PG.js檔案如下:

var pg = require('pg');
var conString = "postgres://username:[email protected]/databasename";
var client = new pg.Client(conString);

var PG = function(){
    console.log("準備向****資料庫連線...");
};

PG.prototype.getConnection = function(){
    client.connect(function (err) {
        if (err) {
            return console.error('could not connect to postgres', err);
        }
        client.query('SELECT NOW() AS "theTime"', function (err, result) {
            if (err) {
                return console.error('error running query', err);
            }
            console.log("hbdfxt資料庫連線成功...");
        });
    });
};

// 查詢函式
//@param str 查詢語句
//@param value 相關值
//@param cb 回撥函式
var clientHelper = function(str,value,cb){
    client.query(str,value,function(err,result){
        if(err) {
            cb("err");
        }
        else{
            if(result.rows != undefined)
                cb(result.rows);
            else
                cb();
        }
    });
}
//增
//@param tablename 資料表名稱
//@param fields 更新的欄位和值,json格式
//@param cb 回撥函式
PG.prototype.save = function(tablename,fields,cb){
    if(!tablename) return;
    var str = "insert into "+tablename+"(";
    var field = [];
    var value = [];
    var num = [];
    var count = 0;
    for(var i in fields){
        count++;
        field.push(i);
        value.push(fields[i]);
        num.push("$"+count);
    }
    str += field.join(",") +") values("+num.join(",")+")";
    clientHelper(str,value,cb);
};

//刪除
//@param tablename 資料表名稱
//@param fields 條件欄位和值,json格式
//@param cb 回撥函式
PG.prototype.remove = function(tablename,fields,cb){
    if(!tablename) return;
    var str = "delete from "+tablename+" where ";
    var field = [];
    var value = [];
    var count = 0;
    for(var i in fields){
        count++;
        field.push(i+"=$" +count);
        value.push(fields[i]);
    }
    str += field.join(" and ");
    clientHelper(str,value,cb);
}

//修改
//@param tablename 資料表名稱
//@param fields 更新的欄位和值,json格式
//@param mainfields 條件欄位和值,json格式
PG.prototype.update = function(tablename,mainfields,fields,cb){
    if(!tablename) return;
    var str = "update "+tablename+" set ";
    var field = [];
    var value = [];
    var count = 0;
    for(var i in fields){
        count++;
        field.push(i+"=$"+count);
        value.push(fields[i]);
    }
    str += field.join(",") +" where ";
    field = [];
    for(var j in mainfields){
        count++;
        field.push(j+"=$"+count);
        value.push(mainfields[j]);
    }
    str += field.join(" and ");
    clientHelper(str,value,cb);
}

//查詢
//@param tablename 資料表名稱
//@param fields 條件欄位和值,json格式
//@param returnfields 返回欄位
//@param cb 回撥函式
PG.prototype.select = function(tablename,fields,returnfields,cb){
    if(!tablename) return;
    var returnStr = "";
    if(returnfields.length == 0)
        returnStr = '*';
    else
        returnStr= returnfields.join(",");
    var str = "select "+returnStr+ " from "+tablename+" where ";
    var field = [];
    var value = [];
    var count = 0;
    for(var i in fields){
        count++;
        field.push(i+"=$"+count);
        value.push(fields[i]);
    }
    str += field.join(" and ");
    clientHelper(str,value,cb);
};

module.exports = new PG();


用法很簡單,如下:
var pgclient = require('./PG');// 引用上述檔案
pgclient.getConnection();

// 呼叫上述四個函式即可
pgclient.save('userinfo',{'name': admin},cb);<span style="font-family: Arial, Helvetica, sans-serif;">.</span>

相關推薦

Nodejspostgresql基本操作封裝

基於nodejs平臺對postgresql的增刪改查基本操作進行了封裝,能滿足基本的實際應用,比較複雜的SQL需另外實現。 PG.js檔案如下: var pg = require('pg'); var conString = "postgres://username:[e

[開源]使用C# CPU卡基本操作封裝

bubuko 廣告 說明 byte 完成 記錄日誌 介紹 http tps Github 地址:https://github.com/zifeiniu/CPUCardLib 項目需求及簡介: 公司要求將用戶相關的信息儲存到射頻卡中,之前項目使用的Mifare類型卡,只儲存了

Python-借助xlsxwriterExcel基本操作

ring log tle src ima 文件 條形圖 def title 1導入第三方包,需單獨下載,安裝pip工具的情況下,可使用CMD下命令:pip install xlsxwriter 1 import xlsxwriter 2創建excel文件,新增一個工作簿

postgresql 基本操作

int null mail sig pass arc 表操作 查看sql alt 庫操作 \h:查看SQL命令的解釋,比如\h select。 \?:查看psql命令列表。 \l:列出所有數據庫。 \c [database_

python mysql基本操作封裝

# -*- coding: UTF-8 -*- import re import MySQLdb as mdb class MysqldbHelper(object): """操作mysql資料庫,基本方法 """ def __init__(self

單機版 RedisPoolUtil({基本操作封裝工具類})【一】

<!--整合的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&

單機版 JedisUtil({基本操作封裝工具類})【二】

<!--整合的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&

單機版 RedisUtils({基本操作封裝工具類})【三】

<!--整合的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&

postgreSql 基本操作總結

ssi lec order by sta cti title 退出 key syntax 0. 啟動pgsl數據庫 pg_ctl -D /xx/pgdata start 1. 命令行登錄數據庫 1 psql -U username -d d

luasqlite資料庫操作封裝

DB = {} db_e = require "luasql.sqlite3" function open_db( ... ) -- body env = assert(db_e.

DataFrame行列的基本操作實戰

int32 from imp [1] object num 所有 col 三種 1、pandas對行列的基本操作命令: import numpy as np import pandas as pd from pandas import Sereis, DataFrame

象序列化和反序列化的基本操作

bsp 序列 log png .cn ima images mage alt 對象序列化和反序列化的基本操作

表數據的基本操作

-1 兩個 指定 沒有 har 操作 null 之間 pan --對日期的做法insert into wan values (‘ktf‘,5000,to_date(‘1980-08-11 14:40:23 ‘,‘yyyy-mm-dd hh24:mi:ss‘));sele

RDDs基本操作、RDDs特性、KeyValueRDDs

clas count() cas 類型 cti 遍歷 strong 節點 分布式 摘要:RDD是Spark中極為重要的數據抽象,這裏總結RDD的概念,基本操作Transformation(轉換)與Action,RDDs的特性,KeyValue對RDDs的Transforma

PDO mysql的基本操作

con ins nsa http array 查詢 pan rom 錯誤 PDO擴展操作 <?php $dsn = ‘mysql:dbname=yii2;host=localhost‘; $user = ‘root‘; $password = ‘123456‘;

PHP面向象的三大特征操作——封裝、繼承、多態(上)

function 有一個 私有 urn 變量賦值 魔術方法 var public 安全 <?php //三大特征:封裝、繼承、多態 //封裝做法:1.將成員變量變為私有2.在類中做方法間接操作成員變量3.在方法裏加控制條件 //封裝目的:使類更加安全/* class

postgresql基本命令操作

postgresql基本命令操作postgresql基本命令操作:登陸數據庫:[[email protected] ~]$ psql -Utestwjw -h 127.0.0.1 -dpostgres -p 36985 Password for user testwjw: psql.bin (9.5

rediskey的基本操作

mman sel .com error .net exist flushdb empty flush   不忘初心,勵誌前行 del key1 key2 ... Keyn作用: 刪除1個或多個鍵返回值: 不存在的key忽略掉,返回真正刪除的key的數量 rename ke

javaredis的基本操作

pac 同時 功能 serve chm 更新 程序 bench 模擬 2、安裝     1)解壓後將裏面所有文件拷貝至redis安裝目錄: 幾個exe程序的功能:           redis-benchmark.exe:性能測試,用以模擬同時由N個客戶端發

C語言文件的基本操作

file結構體 參考 b- https rewind 語言 正在 cpp 作文件 在C語言中,對於文件的操作是利用FILE結構體進行的。 幾個常用的操作文件函數簡介 1:打開文件 FILE *fopen( const char *filename, const char