Angularjs 如何使用nodejs在postgres中正确定义数据库连接

Angularjs 如何使用nodejs在postgres中正确定义数据库连接,angularjs,node.js,postgresql,Angularjs,Node.js,Postgresql,var config=require('config.json'); var=要求('lodash'); var jwt=require('jsonwebtoken'); var bcrypt=require('bcryptjs'); var Q=要求('Q'); var pg=需要(“pg”); var conString=”postgres://postgres:12345@localhost/alaa”; var服务={}; service.authenticate=验证; service

var config=require('config.json');
var=要求('lodash');
var jwt=require('jsonwebtoken');
var bcrypt=require('bcryptjs');
var Q=要求('Q');
var pg=需要(“pg”);
var conString=”postgres://postgres:12345@localhost/alaa”;
var服务={};
service.authenticate=验证;
service.getById=getById;
service.create=create;
service.update=更新;
service.delete=\u delete;
module.exports=服务;
函数身份验证(用户名、密码){
var deferred=Q.deferred();
var conString=”postgres://postgres:12345@localhost/alaa”;
pg(结构、功能(错误、用户){
if(err)deferred.reject(err.name+':'+err.message);
if(user&&bcrypt.compareSync(密码,user.hash)){
//身份验证成功
resolve(jwt.sign({sub:user.\u id},config.secret));
}否则{
//身份验证失败
延迟。解决();
}
});
回报。承诺;
}
函数getById(_id){
var deferred=Q.deferred();
query('SELECT*FROM users,其中id=$1',[id],函数(err,user){
if(err)deferred.reject(err.name+':'+err.message);
如果(用户){
//返回用户(无哈希密码)
deferred.resolve(u.omit(user,'hash'));
}否则{
//找不到用户
延迟。解决();
}
});
回报。承诺;
}
函数创建(userParam){
var deferred=Q.deferred();
//验证
pg(施工、,
{username:userParam.username},
函数(错误,用户){
if(err)deferred.reject(err.name+':'+err.message);
如果(用户){
//用户名已存在
deferred.reject('Username'+userParam.Username+'“已被接受”);
}否则{
createUser();
}
});
函数createUser(){
//将用户对象设置为不带明文密码的userParam
var user=u2;.omit(userParam,'password');
//将哈希密码添加到用户对象
user.hash=bcrypt.hashSync(userParam.password,10);
var query='插入用户(用户、密码)值($1,$2)';
pg(施工、,
功能(错误、用户、文档){
if(err)deferred.reject(err.name+':'+err.message);
延迟。解决();
});
}
回报。承诺;
}
函数更新(_id,userParam){
var deferred=Q.deferred();
//验证
query('SELECT*FROM users,其中id=$1',[id],函数(err,user){
if(err)deferred.reject(err.name+':'+err.message);
if(user.username!==userParam.username){
//用户名已更改,请检查是否已使用新用户名
db.users.findOne(
{username:userParam.username},
函数(错误,用户){
if(err)deferred.reject(err.name+':'+err.message);
如果(用户){
//用户名已存在
延迟.拒绝('Username'+req.body.Username+'已被接受')
}否则{
updateUser();
}
});
}否则{
updateUser();
}
});
函数updateUser(){
//要更新的字段
变量集={
firstName:userParam.firstName,
lastName:userParam.lastName,
用户名:userParam.username,
};
//如果输入了密码,请更新密码
if(userParam.password){
set.hash=bcrypt.hashSync(userParam.password,10);
}
pg(施工、,
功能(错误、文档){
if(err)deferred.reject(err.name+':'+err.message);
延迟。解决();
});
}
回报。承诺;
}
函数_delete(_id){
var deferred=Q.deferred();
query('DELETE FROM users,其中id=$1',[id],
功能(err){
if(err)deferred.reject(err.name+':'+err.message);
延迟。解决();
});
回报。承诺;

}
该库的介绍非常清楚:有趣的是,正如您的错误所说,“pg不是函数”。因为pg模块不导出函数,所以它导出一个对象@vitaly-t有正确的链接,可以找到您需要的正确示例代码。