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.pswp.cn/news/249351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249351.shtml
英文地址,請注明出處:http://en.pswp.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三個參數,正整數值的取值…