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