美文网首页Node.js让前端飞我爱编程
node增删改查发邮件了解一下

node增删改查发邮件了解一下

作者: 会飞的猪l | 来源:发表于2018-04-02 17:36 被阅读100次

    node作为JavaScript运行环境,对Chrome V8引擎进行了封装。node对一些特殊用例进行了优化,提供代替的API,使得V8在非浏览器环境下运行得更好。
    V8引擎执行JavaScript的速度非常快,性能非常好。node.js就是基于ChromeJavaScript运行时建立的平台,用于方便地搭建响应速度快,易于扩展的网络应用。
    node.js使用了事件驱动,非阻塞I/O模型而得以轻量和高效,非常适合分布式设备上运行数据紧密型的实时应用。
    现在大部分前端框架都基于node去开发啦,这对于node很友好,因为这样你只要跑一个服务,就可以将后台、前台都展现完成。
    前一段时间刚来到公司,由于后台比较忙,他们就让我拿node去开发啦。使用node的express框架,开发感觉很高效,很迅速。

    首先将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差不多的作用。

    下来就很简单了我们只要创建一个路由,就可以启动一个服务

    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里面就是对于这个请求返回数据的处理

    读数据 查数据

    读取数据   操作的本地文件,方便你们去看吧
    首先去读文件 拿到文件数据转成JSON 因为这个请求有可能会传参数页面数据多少和页数,所以我用了try catch,拿请求数据的话,就是req.body加你的字段,
    返回数据的话res.json({})很简单的东西我也就不具体解释啦
    
    查数据的话 使用字符串方法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有值时 
                //筛选拿到所有数据
                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]);
                    }
                }
                //找到当前页数据
                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)]);
                    }
                }
                //页数赋值
                data.PageInfo.RecordCount = filterArr.length;
                //数据赋值
                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: "操作成功"
                })
            }
    
        });
    }
    

    删数据

    判断请求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: "操作成功"
                })
            });
        });
    }
    

    改数据

    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: "操作成功"
                })
            });
        });
    }
    

    添加数据

    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: "操作成功"
                })
            });
        });
    }
    
    

    最后发送邮件

    通过npm Install emailjs
    var email = require("emailjs");
    
    exports.SendEmail = function(req, res) {
        var server = email.server.connect({
            user: "2542804080@qq.com", // 你的QQ用户
            password: "mxbuhhzbcztoeacg", // 注意,不是QQ密码,登录QQ邮箱 设置  账户  POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务   里面的开启服务 IMAP/SMTP服务这个服务打开会返回一个码
            host: "smtp.qq.com", // 主机,不改
            ssl: true // 使用ssl
        });
    
        //开始发送邮件
        server.send({
            text: "**设备,**断网,请进行处理。", //邮件内容
            from: "2542804080@qq.com", //谁发送的
            to: "2542804080@qq.com", //发送给谁的
            subject: "车间设备断网提醒" //邮件主题
        }, function(err, message) {
            //回调函数
            console.log(err || message);
        });
    }
    

    相关文章

      网友评论

        本文标题:node增删改查发邮件了解一下

        本文链接:https://www.haomeiwen.com/subject/fiyxhftx.html