node增刪改查發(fā)郵件了解一下

node作為JavaScript運行環(huán)境,對Chrome V8引擎進行了封裝。node對一些特殊用例進行了優(yōu)化,提供代替的API,使得V8在非瀏覽器環(huán)境下運行得更好。
V8引擎執(zhí)行JavaScript的速度非???,性能非常好。node.js就是基于ChromeJavaScript運行時建立的平臺,用于方便地搭建響應速度快,易于擴展的網(wǎng)絡應用。
node.js使用了事件驅(qū)動,非阻塞I/O模型而得以輕量和高效,非常適合分布式設備上運行數(shù)據(jù)緊密型的實時應用。
現(xiàn)在大部分前端框架都基于node去開發(fā)啦,這對于node很友好,因為這樣你只要跑一個服務,就可以將后臺、前臺都展現(xiàn)完成。
前一段時間剛來到公司,由于后臺比較忙,他們就讓我拿node去開發(fā)啦。使用node的express框架,開發(fā)感覺很高效,很迅速。

首先將express引入全局

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var config = require('./routes/config.js')

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
//app.set('views', path.join(__dirname, 'Module'));
app.set('view engine', 'jade');

app.use(session({
    cookieName: 'session',
    secret: 'someRandomSecret!',
    duration: 24 * 60 * 60 * 1000,
    activeDuration: 1000 * 60 * 5
}));


app.use(logger('dev'));
app.use(bodyParser.json());

當然我還引入了一些其他東西,并將它use注入全局,就和vue差不多的作用。

下來就很簡單了我們只要創(chuàng)建一個路由,就可以啟動一個服務

var StateTime = require('../controller/StateTime.js');
module.exports = function(app) {
    app.get('/StateTime', StateTime.StateTime);
    app.post('/StateTime/StateList', StateTime.StateList);
    app.post('/StateTime/DeleteStateList', StateTime.DeleteStateList);
    app.post('/StateTime/AddStateList', StateTime.AddStateList);
    app.post('/StateTime/UpdataStateList', StateTime.UpdataStateList);
    app.get('/StateTime/SendEmail', StateTime.SendEmail)
}

get就是get請求,post就是post請求。很簡單。還引入來了別的js,這個js里面就是對于這個請求返回數(shù)據(jù)的處理

讀數(shù)據(jù) 查數(shù)據(jù)

讀取數(shù)據(jù)   操作的本地文件,方便你們?nèi)タ窗?首先去讀文件 拿到文件數(shù)據(jù)轉(zhuǎn)成JSON 因為這個請求有可能會傳參數(shù)頁面數(shù)據(jù)多少和頁數(shù),所以我用了try catch,拿請求數(shù)據(jù)的話,就是req.body加你的字段,
返回數(shù)據(jù)的話res.json({})很簡單的東西我也就不具體解釋啦

查數(shù)據(jù)的話 使用字符串方法indexOf方法檢索字符串去判斷。

exports.StateList = function(req, res) {
    fs.readFile(path.resolve('/mda_new_git/MDA_NODE/Module/StateTime/StateList.json'), 'utf8', function(err, data) {
        if (err) console.log(err);

        var filterArr = [];
        var pageArr = [];
        data = JSON.parse(data)

        try {
            //當input有值時 
            //篩選拿到所有數(shù)據(jù)
            for (var i = 0; i < data.List.length; i++) {
                if (data.List[i].MAC_NAME.indexOf(req.body.filter.filters) != -1) {
                    filterArr.push(data.List[i]);
                }
            }
            //找到當前頁數(shù)據(jù)
            for (var i = 0; i < req.body.pageSize; i++) {
                if (filterArr[i + ((req.body.page - 1) * req.body.pageSize)] != null) {
                    pageArr.push(filterArr[i + ((req.body.page - 1) * req.body.pageSize)]);
                }
            }
            //頁數(shù)賦值
            data.PageInfo.RecordCount = filterArr.length;
            //數(shù)據(jù)賦值
            data.List = pageArr;


            res.json({
                Data: data,
                Status: 0,
                Message: "操作成功"
            })
        } catch (error) {

            for (var i = 0; i < req.body.pageSize; i++) {
                if (data.List[i + ((req.body.page - 1) * req.body.pageSize)] != null) {
                    pageArr.push(data.List[i + ((req.body.page - 1) * req.body.pageSize)]);
                }
            }
            data.List = pageArr;
            res.json({
                Data: data,
                Status: 0,
                Message: "操作成功"
            })
        }

    });
}

刪數(shù)據(jù)

判斷請求id和本地id一樣的給splice掉,重新寫入這個文件。
exports.DeleteStateList = function(req, res) {
    fs.readFile(path.resolve('/mda_new_git/MDA_NODE/Module/StateTime/StateList.json'), 'utf8', function(err, data) {
        if (err) console.log(err);
        data = JSON.parse(data);
        for (var i = 0; i < data.List.length; i++) {
            if (req.body.applayId == data.List[i].APPLAY_NBR) {
                data.List.splice(i, 1);
            }
        }
        data.PageInfo.RecordCount--;
        fs.writeFile(path.resolve('/mda_new_git/MDA_NODE/Module/StateTime/StateList.json'), JSON.stringify(data), function(err) {
            if (err) console.error(err);
            res.json({
                Data: data,
                Status: 0,
                Message: "操作成功"
            })
        });
    });
}

改數(shù)據(jù)

exports.UpdataStateList = function(req, res) {
    fs.readFile(path.resolve('/mda_new_git/MDA_NODE/Module/StateTime/StateList.json'), 'utf8', function(err, data) {
        if (err) console.log(err);
        data = JSON.parse(data);
        for (var i = 0; i < data.List.length; i++) {
            if (req.body.applayId == data.List[i].APPLAY_NBR) {
                data.List[i] = {
                    "APPLAY_NBR": req.body.applayId,
                    "START_TIME": req.body.START_TIME,
                    "START_END": req.body.START_END,
                    "MODE": req.body.MODE,
                    "STATE": req.body.STATE,
                    "MAC_NAME": req.body.MAC_NAME,
                    "CONTACT": req.body.CONTACT
                };
            }
        }
        fs.writeFile(path.resolve('/mda_new_git/MDA_NODE/Module/StateTime/StateList.json'), JSON.stringify(data), function(err) {
            if (err) console.error(err);
            res.json({
                Data: data,
                Status: 0,
                Message: "操作成功"
            })
        });
    });
}

添加數(shù)據(jù)

exports.AddStateList = function(req, res) {
    fs.readFile(path.resolve('/mda_new_git/MDA_NODE/Module/StateTime/StateList.json'), 'utf8', function(err, data) {
        if (err) console.log(err);
        data = JSON.parse(data);
        data.List.push({
            "APPLAY_NBR": new Date().getTime() + data.List.length + 1,
            "START_TIME": req.body.START_TIME,
            "START_END": req.body.START_END,
            "MODE": req.body.MODE,
            "STATE": req.body.STATE,
            "MAC_NAME": req.body.MAC_NAME,
            "CONTACT": req.body.CONTACT
        })


        data.PageInfo.RecordCount++;
        fs.writeFile(path.resolve('/mda_new_git/MDA_NODE/Module/StateTime/StateList.json'), JSON.stringify(data), function(err) {
            if (err) console.error(err);
            res.json({
                Data: data,
                Status: 0,
                Message: "操作成功"
            })
        });
    });
}

最后發(fā)送郵件

通過npm Install emailjs
var email = require("emailjs");

exports.SendEmail = function(req, res) {
    var server = email.server.connect({
        user: "2542804080@qq.com", // 你的QQ用戶
        password: "****************", // 注意,不是QQ密碼,登錄QQ郵箱 設置  賬戶  POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務   里面的開啟服務 IMAP/SMTP服務這個服務打開會返回一個碼
        host: "smtp.qq.com", // 主機,不改
        ssl: true // 使用ssl
    });

    //開始發(fā)送郵件
    server.send({
        text: "**設備,**斷網(wǎng),請進行處理。", //郵件內(nèi)容
        from: "2542804080@qq.com", //誰發(fā)送的
        to: "2542804080@qq.com", //發(fā)送給誰的
        subject: "車間設備斷網(wǎng)提醒" //郵件主題
    }, function(err, message) {
        //回調(diào)函數(shù)
        console.log(err || message);
    });
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Node.js是目前非?;馃岬募夹g,但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    w_zhuan閱讀 3,732評論 2 41
  • 很多Node.js初學者都會有這樣的疑惑,Node.js到底是單線程的還是多線程的?通過本章的學習,能夠讓讀者較為...
    越努力越幸運_952c閱讀 3,817評論 4 36
  • Node.js是目前非?;馃岬募夹g,但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    Myselfyan閱讀 4,203評論 2 58
  • 有些人不需要做太多的努力,自然而然地就忘記了,然后不怎么會想起來,甚至有關那些人的事消失得無影無蹤,不會去輕易挖掘...
    4e554a58711c閱讀 407評論 0 1
  • 離從不失約的正午十二點還有二十分鐘,青凌已經(jīng)到了萬能交易所,開始了打掃工作,讓一個如此秀美的女生打掃這陳舊昏暗的店...
    藏在陰影里的男人閱讀 595評論 0 1

友情鏈接更多精彩內(nèi)容