node 同步js代码-超越昨天的自己系列(5)
超越昨天的自己系列(5)
exports.news = function (req, res) {logger.info('request for /news');var info = req.body;var userId = null;var advIds = [];// 数据库处理步骤1dao.getUserIdAndAreaByImsiAndAppId(info.imsi, info.appid, function (err, rows) {if (err) {logger.error('news error');}logger.debug("news: %j", info);if (rows == null || rows.length == 0) {res.writeHead(200, {"Content-Type": "application/json", 'charset': 'utf-8'});res.end();return;}userId = rows[0].id;var areaCode = rows[0].area;// 数据库处理步骤2dao.getAdvIds(userId, info.appid, function (err, rows) {if (err) {res.writeHead(200, {"Content-Type": "application/json", 'charset': 'utf-8'});res.end();logger.error(err);return;}if (rows.length <= 0) {res.writeHead(200, {"Content-Type": "application/json", 'charset': 'utf-8'});res.end();return;}for (var index in rows) {advIds.push(rows[index].adv_id);}// 数据库处理步骤3dao.getAdv(info.adStyle, areaCode, advIds, function (err, rows) {if (err) {res.writeHead(200, {"Content-Type": "application/json", 'charset': 'utf-8'});logger.error('getAdv error: ' + err);res.end();return;}if (rows.length <= 0) {logger.debug('没有找到广告');res.writeHead(200, {"Content-Type": "application/json", 'charset': 'utf-8'});res.end();return;}var advert = rows[0];// 数据库处理步骤4dao.updateAdvPush_state(userId, info.appid, advert.id, function (err, rst) {if (err) {logger.error('update advert in tb_user_advert by advId error" id=' + advert.id + ',' + err);//more error handling actionreturn;}logger.debug('update advert push state success: advId=%d', advert.id);});res.writeHead(200, {"Content-Type": "application/json"});res.write(advert.body);res.end();});});}); };
exports.location = function (req, res) {logger.info("--location begin--");var info = req.body;var imsi = info.imsi;var appId = info.appid;var lat = info.lat;var lgt = info.lgt;logger.info("imsi:" + imsi + "appId:" + appId + "lat:" +lat + "lgt:" + lgt);var city;var area;//数据库处理步骤1getCity(lat, lgt, function (err, rst) {city = rst.city;if (!city) {logger.debug('city not exist: lgt=%s, lat=%s', lgt, lat);}logger.debug('city got: lgt=%s, lat=%s', lgt, lat);dao.emit('getCityOK');});//数据库处理步骤2dao.once('getCityOK', function () {dao.getCityCode(city, function (err, rows) {logger.debug('get into tagGetCityCode');if (err) {logger.error('getCityCode error, city=%s', city);}if (rows.length <= 0) {logger.debug('city not exist in the databse, city:%s', city);user.area = undefined;}else {area = rows[0].id;logger.debug('get City Code: id=%d', area);}dao.emit('getCityCodeOK');});});//数据库处理步骤3dao.once('getCityCodeOK', function () {dao.updateUserArea(imsi, appId, area, function(err, rst){if (err) {logger.error('update area in tb_user by imsi and app_id error" imsi=' + imsi + ','+ "app_id="+ appId + err);return;}logger.debug('update user area success: area=%s', area);})});logger.info("--location end--");res.send(''); };
--------------------------------------------------
让我们继续前行!
node 同步js代码-超越昨天的自己系列(5)相关推荐
- node.js初探-超越昨天的自己系列(3)
超越昨天的自己系列(3) 其实,学习这事总是被动的,有一天,当我们明白需要努力学习的时候,才发现,知识的世界是那么的浩淼,见不到岸,甚至见不到日出,迷雾重重,困惑的我们很容易甩一甩手不想继续了.所以说 ...
- spring和redis的整合-超越昨天的自己系列(7)
超越昨天的自己系列(7) 扯淡: 最近一直在慢慢多学习各个组件,自己搭建出一些想法.是一个涉猎的过程,慢慢意识到知识是可以融汇贯通,举一反三的,不过前提好像是研究的比较深,有了自己的见解.自认为学习 ...
- node源码详解(四) —— js代码如何调用C++的函数
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource4 本博客同步在https://cnodejs. ...
- Node.JS中调用JShaman,加密JS代码
在Node.JS环境中,调用JShaman的WebAPI接口,对JS代码进行混淆加密. 效果如下: 代码: //js代码 var js_code = `function NewObject(prefi ...
- 8 行 Node.js 代码实现代理服务器
接触 Node.js 已有多年,一直喜欢它的单线程模型和异步IO特性,以及 JavaScript 语言本身的灵活性.同时,JavaScript 前后端通吃,在全栈开发领域具有独特的优势.今天就来看看作 ...
- node.js 代码修改 自动识别重启工具
npm install supervisor -g supervisor xx.js 代替 node xx.js 能实现自动重启服务,识别代码更新
- Node四种动态加载JS代码方法性能对比
背景 我们运行node程序的时候,一般情况下,js代码都是事先写好在js文件里,然后启动的时候加载到内存中执行的.在一些特殊的需求下,我们可能会执行一些动态的js代码. 四种方法 目前我能想到的方法有 ...
- 【笔记】Pycharm配置Node.js运行js代码
最近在学习关于Js逆向的知识,需要在PyCharm中运行Js程序,记录一下配置过程. 安装Node.js Node.js中文网 选择自己电脑对应的安装包下载暗转即可 安装好软件后,配置node.js环 ...
- node.js代码总结
------------------------- node.js 基础 ---------------------------- 1. node.js 基础语法及快捷键 node -v 查看node ...
最新文章
- linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建
- 马斯克的90后合伙人离职Neuralink!5岁学编程,曾创立2家公司
- 将秒(非时间戳)转化成 ** 小时 ** 分
- Django框架连接MySQL数据库
- Django的路由层
- 中小企业电子商务如何发展?
- tensorflow精进之路(二十)——使用slim模型库训练自己的数据
- Oracle swap 100%案例分析
- 屏幕颜色拾取器 (VC++)
- 如何一键查询物流信息并筛选出未签收单号
- esp8266使用安信可IDE编译、烧录
- 跨时区时间运算以及时间实时更新方法
- template的使用,泛式编程
- CAD高版本窗体阵列LISP_如何把CAD高版本阵列对话框在低版本调出来? _ 一堂课...
- 标签云的实现(使用jQuery插件jqcloud)
- 深圳市专精特新企业申报流程及奖励政策重点介绍,补贴20-50万
- 如果有一天不写代码了,还能干点啥?
- 头歌 数据结构与算法答案 善用目录
- 下拉菜单中自动亮度调节P 上背光调节
- 复盘2020全球旅游业:新冠疫情巨大冲击下的艰难复苏
热门文章
- python split(), os.path.split()和os.path.splitext()函数的区别
- angular环境搭建
- 线上飙升800%,load达到12的解决过程
- LeetCode Rotate Function(寻找规律)
- MySQL删除表数据
- java的4种内部类
- reGeorg+Proxifier使用
- Django连接mysql数据库
- 001-Java命名规范
- 爬虫--用python中requests和urllib模块爬取图片