nodejs入坑全记录(持续更新)

20200118

post请求 接收参数用req.body
get请求 接收参数用req.query

小程序错误码 -605101 微信后台 HTTP API 错误:查询语句解析失败
参考链接:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference/errcode.html

20200118 express框架修改内容后自动更新重启

第一步:安装nodemon

cnpm install -g nodemon(全局安装)
cnpm install nodemon --save(安装到本地)

第二步:在项目目录下创建 nodemon.json 文件

{
  "restartable": "rs",
  "ignore": [
    ".git",
    ".svn",
    "node_modules/**/node_modules"
  ],
  "verbose": true,
  "execMap": {
    "js": "node --harmony"
  },
  "watch": [],
  "env": {
    "NODE_ENV": "development"
  },
  "ext": "js json"
}
//restartable-设置重启模式
//ignore-设置忽略文件
//verbose-设置日志输出模式,true 详细模式
//execMap-设置运行服务的后缀名与对应的命令 表示使用 nodemon 代替 node
//watch-监听哪些文件的变化,当变化的时候自动重启
//ext-监控指定的后缀文件名

第三步:修改app.js文件 

// module.exports = app;//这是 4.x 默认的配置,分离了 app 模块,将它注释即可,上线时可以重新改回来

var debug = require('debug')('my-application'); // debug模块
app.set('port', process.env.PORT || 3000); // 设定监听端口

//启动监听
var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});

 第四步:运行nodemon app.js启动命令

20200111 express-generator脚手架的使用

第一步:安装 cnpm i express-generator -g
第二步:创建项目 express demo -e    // -e指使用ejs模板
第三步:安装依赖 进入项目 执行cnpm i
第四步:启动项目 执行npm start命令

nodejs中uuid的生成

nodejs 提供了一个 node-uuid 模块用于生成 uuid 执行命令安装 cnpm install node-uuid --save

var uuid = require('node-uuid');
console.log(uuid.v1())    // v1是基于时间戳生成的
console.log(uuid.v4())    // v4是随机生成的

如何实时监听js文件的变化

第一步:安装 cnpm install -g supervisor
第二步:运行 supervisor –harmony app.js 启动对应文件
这样就不再需要因为更改了js文件而手动重启nodejs服务了

node.js解决跨域访问

app.all('*',function (req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With');
  res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
  if (req.method == 'OPTIONS') {
    res.send(200);
  }
  else {
    next();
  }
});

node.js连接mysql返回的数据有RowDataPacket的问题

这样导致前端处理数据的话比较麻烦 怎么解决呢 一行代码  var data = JSON.parse(JSON.stringify(results));

node.js连接mysql数据库

var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '123456',
  database : 'tengbodb'
});
connection.connect();
connection.query('SELECT * from usertable', function (error, results, fields) {
  if(error){
    console.log(error)
  }else {
    var list = JSON.parse(JSON.stringify(results));
  }
});

node.js连接sqlserver

1.安装mssql(package.json中配置"mssql": "4.0.4")

2.封装db.js

var mssql = require('mssql');
var db = {};
var config = {
  user: 'xxxxx',
  password: 'xxxxx',
  server: 'xxxxx',
  port:3433,
  driver: 'msnodesql',
  database: 'xxxxx',
  connectionString: "Driver={SQL Server Native Client 11.0};Server=#{server}\\sql;Database=#{database};Uid=#{user};Pwd=#{password};",
  pool: {
    min: 0,
    max: 10,
    idleTimeoutMillis: 3000
  }
};
db.sql = function (sql, callBack) {
  var connection = new mssql.ConnectionPool(config, function (err) {
    if (err) {
      console.log(err);
      return;
    }
    var ps = new mssql.PreparedStatement(connection);
    ps.prepare(sql, function (err) {
      if (err){
        console.log(err);
        return;
      }
      ps.execute('', function (err, result) {
        if (err){
          console.log(err);
          return;
        }
        ps.unprepare(function (err) {
          if (err){
            console.log(err);
            callback(err,null);
            return;
          }
          callBack(err, result);
        });
      });
    });
  });
};
module.exports = db;

3.引入db.js并使用

var db = require('./db.js');
app.get('/users',urlencodedParser, function (req, res) {
  var sql="SELECT * from T_User";
  db.sql(sql,function(err,data){
      if (!err) {
        console.log(data)       //成功返回数据
        res.setHeader('Content-Type', 'text/plain;charset=utf-8');   // 避免返回中文乱码
        res.end(JSON.stringify(data));
      }
      else {
        console.log(err)      //出错返回
      }
    }
  );
})

使用request请求第三方api

// 安装命令 cnpm install request --save
// 引入 var request = require('request');

// 获取用户openid 只有get
app.get('/getOpenid',urlencodedParser, function (req, res) {
  request({
    url:'https://api.weixin.qq.com/sns/jscode2session?appid='+req.query.appid+'&secret='+req.query.secret+'&js_code='+req.query.code+'&grant_type=authorization_code',
    method:'get',
    json:true,
  },function (error,response,body) {
    if(!error&&response.statusCode===200){
      res.end(JSON.stringify(body));
    }
    console.log(body)
  })
})

// 先获取token 在请求小程序服务的api查询云数据库
router.get('/', function(req, res, next) {
    request({
        url:'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret',
        method:'get',
        json:true,
    },function (error,response,body) {
        if(!error&&response.statusCode===200){
            request({
                url:'https://api.weixin.qq.com/tcb/databasequery?access_token='+body.access_token,
                method:'post',
                json:true,
                headers: {
                    "content-type": "application/json",
                },
                body: {
                    "env":"test-yn3xk",
                    "query": "db.collection(\'users\').get()"
                }
            },function (error,response,body) {
                if(!error&&response.statusCode===200){
                    res.send(body);
                }
            })
        }
    })
});

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值