loopback 03
使用微信开发前准备
微信公众平台操作
- 登录之后,得到appID和appsecret
- 根据appID和appsecret获取access token
- 获取测试用户的ID,让测试用户扫测试二维码
- 获取用户基本信息(UnionID机制)
- 获取需要的接口
- 网页授权获取用户基本信息
- 创建自定义接口
- 回复功能
- 微信的js-sdk
- 注意公众号配置时‘JS接口安全域名’和‘网页授权获取用户回调页面’的网址都是不加'http'的
nodejs常用的wechat包
- node-wechat, 基本的功能操; token需要手动获得
- wechat-api, 较多的功能操作,包括获取js-sdk操作需要的配置参数; token会自动获得并缓存
- wechat-oauth, OAuth授权操作; token和AccessToken都会自动获得并缓存
实际网页授权获操作
- 产生的链接结构
//例子
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
首先在测试页面的网页账号中填写域名,注意格式;
在后端route中填写token
module.exports = (app)->
router = app.loopback.Router()
wechat = require 'wechat'
router.get '/', wechat('abs', (req, res, next)-> next())
router.post '/', wechat('abs', (req, res, next)-> next())
return router
最后在在测试账号的配置接口信息填写域名和token
注意要在关注该测试账号的的账号中才能调用获取其用户信息
使用promise
- 例子
var time = function(value) {
new Promise(resolve, reject) {
if(..) {
resolve(value)
} else {
reject(value)
}
}
}
time('valuie')
.then(function(){
...
}, function(){
....
})
- 在nodejs中使用:
Promise = require 'bluebird'
远程服务器部署
关于证书权限
- 角色: root, group, other
- 权限: r:4, w:2, x:1
- 修改权限,如给root只读权限,其它角色不给权限:
chomd 400 <证书路径>
连接远程服务器
- ssh -i <证书路径> [用户名/密码]@域名
载入github上的项目
- 使用https开头的连接
- 进入项目,安装依赖包
使用pm2
- 如果上面的连接方式时需要密码的,则可以用strongloop的pm;
- 安装全局pm2包
- 显示项目信息:
sudo pm2 ls/list - 停止项目:
sudo pm2 stop <app_name/id> - 重新启动项目:
sudo pm2 restart<app_name/id> - 打印日志:
sudo pm2 logs - 删除项目:
sudo pm2 delete <app_name/id>
pm2生成自动重启项目的脚本
$ pm2 startup
# auto-detect platform
$ pm2 startup [platform]
# render startup-script for a specific platform, the [platform] could be one of:
# ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
linux下的一般操作
- 路径操作:
cd <file_path>;cd ../ - 删除文件夹:
rm -rf example - 显示进程:
- 显示当前所有进程:
ps aux - 显示并抓取特定的进程:
ps aux | grep node/mongod//最左边的为进程id - 显示ps的帮助信息:
man ps
- 显示当前所有进程:
- 消灭进程: kill
- 查看端口:
netstat -anpnetstat -anp - 查看网络服务:
curl http://localhost:3000
安装mongodb
- 为了方便,可以将db建立在项目当中
- 建立:
mkdir -p data/db - 运行:
mongod --dbpath ./data/db/service mongod start --dbpath data/db
运行的程序
- 隐藏到后台
ctrl z - 显示后台运行程序: bg
- 打开后台运行程序: fg <job_id> //如果没有加id,默认打开最近的
使用远程服务器
- 在项目中的
datasources.json文件中配置远程数据库的host,port进行修改 - 远程数据库要创建账户,并且在
datasources.json文件中进行配置
导出mongodb数据
- 例子
mongoexport -d development -c user -o users.json
*mongoexport -d development -c user --csv -f id, nickname -o users.csv
mongodb的可视化工作推荐
运行项目
sudo PORT=80 pm2 start <server路径>//这里pm2其实相当于npm ; 发布的时候添加NODE_ENV=production
查询远程服务器的id:ping <域名>
在linux上的常见安装:
ssh远程登录
- 有证书的情况下:
ssh -i xxx.pem username@example.com - 没有证书:
ssh username@xx.xx -p xxx
远程服务器拷贝文件到本地
scp -P 端口 username@XX.XX:[/home/....] [./]
退出远程服务器
exit
简易的压力测试
ab -n 1000 -c 10 http://localhost:3000/- n 总共发送请求数;
*c 并发数;
- n 总共发送请求数;
使用mocha测试
mocha --compilers js:babel/register: 在babel模式下测试,默认查找test文件夹,注意此时全局不要安装babel;./node_modules/.bin/mocha --compilers js:babel/register;
loopback 03的更多相关文章
- Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写
很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-bo ...
- Docker系列03—Docker 基础入门
本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...
- linux(03)基础系统优化
Linux之基础系统优化 Linux基础系统优化 >>> https://www.cnblogs.com/pyyu/p/9355477.html Linux的网络功能相当强悍,一时之 ...
- Android游戏开发实践(1)之NDK与JNI开发03
Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...
- Java多线程系列--“JUC锁”03之 公平锁(一)
概要 本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_40)一. tryAcqu ...
- iOS系列 基础篇 03 探究应用生命周期
iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...
- javaSE基础03
javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...
- UML大战需求分析——阅读笔记03
读<UML大战需求分析>有感03 状态机图和活动图在样子比较相似,但状态机图是用来为对象的状态及造成状态改变的事件建模.我们大二学习UML统一建模语言状态机图模块时了解到,UML的状态机图 ...
- 2016-1-28 图解HTTP(03)
6.2.5 非HTTP/1.1首部字段 不限于RFC2616中定义的47种首部字段,还有Cookie.Set-Cookie和Content-Disposition等在其他RFC中首部字段 ...
随机推荐
- HTTP协议与HTML表单(再谈GET与POST的区别)
HTTP的GET/POST方式有何区别?这是一个老生常谈的问题,但老生常谈的问题往往有一些让人误解的结论.本文将带您浅尝HTTP协议,在了 解HTTP协议的同时将会展示许多被人们忽视的内容.在掌握了H ...
- (转)JAVA AJAX教程第三章—AJAX详细讲解
现在开始深入AJAX,这里还是按老思路,理论和实践相结合.这章的内容主要是讲解AJAX步骤详解,下一张将会用一个AJAX技术实现页面提示效果的实例来说明AJAX的实现. 一.AJAX步骤详解 AJAX ...
- 【leetcode】Min Stack(easy)
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...
- 加载ComboBox控件
/// <summary> /// 加载公司 /// </summary> /// <param name="cbbCompany">Combo ...
- 【XLL 框架库函数】 debugPrintf
通过调用 Windows SDK 函数 OutputDebugStringA 在激活的调试器中输出字符串信息.如果应用程序没有调试器,那么系统调试器就会显示字符串.如果这两种调试器都没使用的话,deb ...
- September 10th 2016 Week 37th Saturday
An innovation that goes beyond imagination again raised the standard. 颠覆想象的创新,再一次刷新标准. An advertisem ...
- mongodb3.2配置文件yaml格式 详解
mongodb3.x版本后就是要yaml语法格式的配置文件,下面是yaml配置文件格式如下:官方yaml配置文件选项参考:https://docs.mongodb.org/manual/ ... #c ...
- 12.享元模式(Flyweight Pattern)
using System; using System.Collections; namespace ConsoleApplication5 { class Program { /// <summ ...
- 如何做好App的引导页?(转)
http://uedc.163.com/12264.html 当你第一次打开一款应用的时候常常会看到精美的引导页设计,它们在你未使用产品之前提前告知你产品的主要功能与特点,第一次印象的好坏会极大地影响 ...
- Pyqt QTabWidget 简单的计算器集合
今天我们简单介绍下QTabWidget,然后在加入Demo计算器 首先我先讲下文件的结构: 文件分四部分, 一部分是Ui设计文件, 一部分是由Ui生成的py文件, 一部分是 计算器的逻辑文件, 最后 ...