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);
                }
            })
        }
    })
});

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章