# nodejs-postgis-service **Repository Path**: wu383389408/nodejs-postgis-service ## Basic Information - **Project Name**: nodejs-postgis-service - **Description**: 一个连接了postgresql的node服务 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-14 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Node.js + Express + PostGIS 服务 基于 Node.js + Express 框架开发,连接 PostGIS 数据库的后台服务,包含登录认证和用户查询接口。 ## 技术栈 - **框架**: Express 4.x - **数据库**: PostgreSQL + PostGIS - **认证**: JWT (JSON Web Token) - **密码加密**: bcryptjs - **跨域**: CORS ## 快速开始 ### 1. 环境配置 ```bash # 复制环境变量文件 cp .env.example .env ``` 编辑 `.env` 文件,配置你的数据库连接信息: ```env PORT=3000 # PostGIS 数据库配置 DB_HOST=localhost DB_PORT=5432 DB_NAME=your_database_name DB_USER=your_username DB_PASSWORD=your_password # JWT 密钥 JWT_SECRET=your_custom_jwt_secret_key JWT_EXPIRES_IN=24h ``` ### 2. 初始化数据库 执行 `sql/init.sql` 脚本到你的 PostGIS 数据库中: ```bash psql -d your_database_name -f sql/init.sql ``` 脚本会创建: - 用户表(支持 PostGIS 地理位置字段) - 默认管理员账户:`admin` / `admin123` - 地理位置索引(可选) ### 3. 安装依赖 ```bash npm install ``` ### 4. 启动服务 ```bash # 开发模式(自动重启) npm run dev # 生产模式 npm start ``` 服务启动后访问:`http://localhost:3000` ## 接口说明 ### 1. 健康检查 **GET** `/api/health` 无需认证,检查服务运行状态 ### 2. 用户登录 **POST** `/api/auth/login` 请求参数: ```json { "username": "admin", "password": "admin123" } ``` 返回结果: ```json { "success": true, "message": "登录成功", "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "user": { "id": 1, "username": "admin", "email": "admin@example.com", "real_name": "系统管理员", "role": "admin" } } } ``` ### 3. 查询用户列表 **GET** `/api/users` 需要在请求头携带认证令牌: `Authorization: Bearer ` 可选查询参数: - `page`: 页码(默认:1) - `limit`: 每页数量(默认:10) 返回结果: ```json { "success": true, "message": "查询成功", "data": { "list": [ { "id": 1, "username": "admin", "email": "admin@example.com", "real_name": "系统管理员", "role": "admin", "created_at": "2024-01-01T00:00:00.000Z", "lng": 116.397228, "lat": 39.907557 } ], "pagination": { "page": 1, "limit": 10, "total": 1, "pages": 1 } } } ``` ## 目录结构 ``` . ├── app.js # 主入口文件 ├── package.json # 依赖配置 ├── .env.example # 环境变量示例 ├── config/ │ └── database.js # PostGIS 数据库配置 ├── middleware/ │ └── auth.js # JWT 认证中间件 ├── models/ │ └── User.js # 用户模型 ├── routes/ │ ├── auth.js # 登录相关路由 │ └── users.js # 用户相关路由 └── sql/ └── init.sql # 数据库初始化脚本 ``` ## PostGIS 扩展说明 本服务已支持 PostGIS 地理位置能力: - 用户表包含 `location` 字段(Point 类型,坐标系 WGS84) - 自动返回经纬度字段 `lng` 和 `lat` - 已创建 GIST 索引优化空间查询 如需扩展空间查询能力,可在 User 模型中添加相关方法。 ## 常见问题 1. **密码加密方法**:使用 bcryptjs,默认哈希轮次 10 2. **JWT 有效期**:默认 24 小时,可在 `.env` 中配置 3. **数据库连接错误**:请检查 PostGIS 服务是否正常运行,配置信息是否正确 4. **默认账号密码**:admin / admin123,生产环境请务必修改