NodeJS+Express+Mysql+MongoDB之环境配置

node作为一款可以兼容前后端的js语言,在做持久层操作上和Java比较类似,下面就简单介绍一下项目中的数据库配置操作.

首选使用express框架自动创建一个测试项目,并在目录下建立一个专门存放数据库配置的配置文件,比如:db.js  代码如下 

/*
* 数据库配置文件
* @Author: zth
* @Date:   2019-02-18 10:50:45
* @Last Modified by:   zth
* @Last Modified time: 2019-03-05 11:35:42
*/// Mysql 配置项
var mysql = require("mysql");
var pool = mysql.createPool({host:"localhost",user:"root",password:"123456",database:"elink_platform"
});/*** mysql查询类* @Author   zth* @DateTime 2019-03-05T11:34:58+0800* @param    {string}                 sql      查询语句*/
function query(sql,callback) {pool.getConnection(function(err,connection) {connection.query(sql, function (err,rows) {callback(err,rows);connection.release();});});
}// MongoDB配置项
var MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017/farmDB';
const dbName = 'farmDB';  /*** MongoDB查询类* @Author   zth* @DateTime 2019-03-05T10:23:09+0800* @param    {[string]}  collection [数据集合名称]* @param    {[json]}    query      [查询语句json对象]*/
function find(collectionName, query) {MongoClient.connect(url, {useNewUrlParser:true}, function(err, client) { const db = client.db(dbName);const collection = db.collection(collectionName);collection.find(query).toArray(function(err, docs) {console.log(docs);});
});
}exports.query = query;
exports.find = find;

这里为了测试就简单创建两个查询的方法,以调试通过为目的.

其次在需要的路由文件中引入db.js,然后进行调用即可.

var express = require('express');
var router = express.Router();var db = require("../config/db");

最后处理返回的结果集,这个和平时注册请求后端接口的数据处理一致.

router.get('/haveJobTypes', function(req, res, next) {console.log(JSON.stringify(req.query));var sql = "SELECT COALESCE (b.job_type_code,'sum') AS job_type_code,SUM(b.job_mu) AS job_mu FROM farm_job_info b LEFT JOIN farm_terminal_reg_info a ON a.car_id=b.car_id AND a.flag=1 AND b.flag=1 WHERE a.org_code IN (SELECT t1.CODE FROM sys_org_info t1,(SELECT @pcode :=CODE FROM sys_org_info WHERE id = " + req.query.orgId + ") t2 WHERE t1.CODE LIKE CONCAT(@pcode,'%')) AND b.job_date BETWEEN '" + req.query.startTime + "' AND '" + req.query.endTime + "' GROUP BY b.job_type_code WITH ROLLUP";db.query(sql, function(err, result){const obj = {status: err ? 1 : 0,data: err ? [] : result}res.json(obj);});var queryJson = { "carId": "HD146555" };db.find('terminal', queryJson, function(err, result) {console.log("result");console.log(result);})
});

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 私有变量的访问和赋值

首先我们这里先描述下:  Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 __doc__, __init__等),不是pri…

SpringBoot入门教程(一)详解intellij idea搭建SpringBoot

最近公司有一个内部比赛(黑客马拉松),报名参加了这么一个赛事,在准备参赛作品的同时,由于参赛服务器需要自己搭建且比赛产生的代码不能外泄的,所以借着这个机会,本地先写了个测试的demo,来把tomcat部署相关…

文艺平衡树 Splay 学习笔记(1)

(这里是Splay基础操作,reserve什么的会在下一篇里面讲) 好久之前就说要学Splay了,结果苟到现在才学习。 可能是最近良心发现自己实在太弱了,听数学又听不懂只好多学点不要脑子的数据结构。 感觉Splay比Treap良心多了—…

JS使用XMLHttpRequest对象POST收发JSON格式数据

JavaScirpt中的XMLHttpRequest对象提供了对 HTTP 协议的完全访问,使用该对象可以在不刷新页面的情况与服务器交互数据。XMLHttpRequest是实现AJAX技术的关键对象,本站曾整理过一篇介绍该对象的文章: JS使用XMLHttpRequest对象与服务器进行数据…

ShopXO本地化部署安装之centeros 安装Apache2.4.6 + PHP7.0.33 + Mysql5.7.25环境

对于centerOS安装PHP环境,目前网上的帖子都已经比较成熟,具体步骤大家可以自行搜索查看,但是在安装过程中遇到的一些小细节,这些内容往往需要结合多个帖子才能找到答案,在这里简单记录一下。 细节一 如果使用的阿里云…

Spring Boot 扩展点应用之工厂加载机制

Spring 工厂加载机制,即 Spring Factories Loader,核心逻辑是使用 SpringFactoriesLoader 加载由用户实现的类,并配置在约定好的META-INF/spring.factories 路径下,该机制可以为框架上下文动态的增加扩展。 该机制类似于 Java SPI…

Vue.js使用-http请求

Vue.js使用-ajax使用 1.为什么要使用ajax 前面的例子,使用的是本地模拟数据,通过ajax请求服务器数据。 2.使用jquery的ajax库示例 new Vue({el: #app,data: {searchQuery: ,columns: [{name: name, iskey: true}, {name: age},{name: sex, dataSource:…

跨域(Cross-Domain) AJAX for IE8 and IE9

1、有过这样一段代码,是ajax $.ajax({url: "http://127.0.0.1:9001",type: "POST",data: JSON.stringify({"reqMsg":"12345"}),dataType: json,timeout: 1000 * 30,success: function (response) {if(response.n6){dosomet…

移动WEB的页面布局

随着移动互联网的日益普遍,现在移动版本的web应用也应用而生,那么在做移动web页面布局的过程中,应该注意哪些要点呢?现把个人的一些学习经验总结如下: 要点一、piexl 1px 2dp dp dpr dpi ppi 要点二、viewport io…

AnswerOpenCV(1001-1007)一周佳作欣赏

外国不过十一,所以利用十一假期,看看他们都在干什么。一、小白问题http://answers.opencv.org/question/199987/contour-single-blob-with-multiple-object/ Contour Single blob with multiple objectHi to everyone. Im developing an object shape id…

Mysql 开启远程连接

在日常的数据库的使用过程,往往会因为连接权限的问题搞得我们焦头烂额,今天我把我们在数据库连接上的几个误区简单做个记录。内容如下: 误区一:MYSQL密码和数据库密码的区别 mysql密码是我们在安装mysql服务是设置的密码&#xf…

基于jsp+servlet完成的用户注册

思考 : 需要创建实体类吗? 需要创建表吗 |----User 存在、不需要创建了!表同理、也不需要了 1.设计dao接口 package cn.javabs.usermanager.dao;import cn.javabs.usermanager.entity.User;/*** 用户的dao接口的设计* author Mryang**/ public interfa…

vue resource then

https://www.cnblogs.com/chenhuichao/p/8308993.html

云开发创建云函数

安装wx-server-sdk时候,终端报错如下: 解决方法: 运行:npm cache clean --force即可 转载于:https://www.cnblogs.com/moguzi12345/p/9758842.html

Java8新特性——函数式接口

目录 一、介绍 二、示例 (一)Consumer 源码解析 测试示例 (二)Comparator (三)Predicate 三、应用 四、总结 一、介绍 FunctionalInterface是一种信息注解类型,用于指明接口类型声明…

CSS3笔记之基础篇(一)边框

效果一、圆角效果 border-radius 实心上半圆: 方法:把高度(height)设为宽度(width)的一半,并且只设置左上角和右上角的半径与元素的高度一致(大于也是可以的)。 div {height:50px;/*是width…

JavaSE之Java基础(1)

1、为什么重写equals还要重写hashcode 首先equals与hashcode间的关系是这样的: 1、如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同; 2、如果两个对象的hashCode相同,它们并不一…

bootstarp table

https://www.cnblogs.com/laowangc/p/8875526.html

高级组件——弹出式菜单JPopupMenu

弹出式菜单JPopupMenu,需要用到鼠标事件。MouseListener必须要实现所有接口,MouseAdapter是类,只写你关心的方法,即MouseAdapter实现了MouseListener中的方法 import javax.swing.*; import java.awt.*; import java.awt.event.Mo…

CSS3笔记之基础篇(二)颜色和渐变色彩

效果一、颜色之RGBA RGB是一种色彩标准,是由红(R)、绿(G)、蓝(B)的变化以及相互叠加来得到各式各样的颜色。RGBA是在RGB的基础上增加了控制alpha透明度的参数。 语法: color:rgba(R,G,B,A) 以上R、G、B三个参数,正整数值的取值…