node.js将MongoDB数据同步到MySQL的步骤


Posted in Javascript onDecember 10, 2017

前言

最近由于业务需要,APP端后台需要将MongoDB中的数据同步到Java端后台的MySQL中,然后又将MySQL中算好的数据,同步到MongoDB数据库。

这个过程看是很繁琐,实际上这就是一个互相写表的过程。

接下来就看看node.js将MongoDB中的数据批量插入到MySQL数据库的实现过程。话不多说了,来一起看看详细的介绍吧。

环境

  • node.js
  • MongoDB
  • MySQL
  • npm

需要的模块

  • mongoose
  • MySQL

准备好MongoDB中的数据

  • 比如说:我这里要同步的是用户表,用户表中包含username,email,password...
  • 通过MongoDB shell命令插入1000条数据

实现

mongoose的Schema我这里就不写了,大家可以上网进行查看,node.js连接MongoDB和MySQL的pool看下面:

node.js连接MongoDB:https://3water.com/article/98813.htm

Nodejs mysql pool使用实例:

mysql模块为felixge/node-mysql

源码如下:

/**
* Created by kevalin on 2015/4/22.
*/
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var conf = require('../config/dbconnection');
//定义pool池
var pool = mysql.createPool(
{
host : conf.dbMysql.host,
user : conf.dbMysql.user,
password : conf.dbMysql.password,
database : conf.dbMysql.database,
port : conf.dbMysql.port
}
);
router.get('/', function(req, res) {
var selectSites = "select *, date_format(do_time, '%Y-%m-%d %H:%i:%s') as time from siteinfo order by id";
pool.getConnection(function(err, connection) {
if (err) throw err;
connection.query(selectSites, function(err, rows) {
if (err) throw err;
res.render('sites', {title : '站点分布', results : rows});
//回收pool
connection.release();
});
});
});
module.exports = router;

下面上关键代码  

思路:

先从MongoDB查询数据然后通过遍历插入MySQL中。

User.find({}, (err, user) => {
 if (err)
 res.send(err);
 for( let i = 0 ; i < family.length ; i ++ ) { 
 console.log("第" + (i + 1) + "条数据");
 let username = user[i].username; 
 let email = user[i].email;
 let password = user[i].password; 
 let sql = "insert into user_table(username, email, password) values ('" + username + "','" + email + "','" + password + "');";
 pool.query(sql,(err, rows) => {
  if (err)
  res.send(err); 

  res.json({
  message:'数据插入成功',
  rows
  });  
 });
 }
});

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
学习从实践开始之jQuery插件开发 对话框插件开发
Apr 26 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
Mar 21 Javascript
js字符串转成JSON
Nov 07 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
Oct 10 Javascript
jQuery3.0中的buildFragment私有函数详解
Aug 16 Javascript
JS获取鼠标相对位置的方法
Sep 20 Javascript
微信小程序 wx:key详细介绍
Oct 28 Javascript
Vue2学习笔记之请求数据交互vue-resource
Feb 23 Javascript
JavaScript判断日期时间差的实例代码
Mar 01 Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
Nov 12 Javascript
Node.js中sequelize时区的配置方法
Dec 10 #Javascript
node.js多个异步过程中判断执行是否完成的解决方案
Dec 10 #Javascript
关于react中组件通信的几种方式详解
Dec 10 #Javascript
vue项目中v-model父子组件通信的实现详解
Dec 10 #Javascript
Angular项目从新建、打包到nginx部署全过程记录
Dec 09 #Javascript
利用ES6实现单例模式及其应用详解
Dec 09 #Javascript
利用node.js如何创建子进程详解
Dec 09 #Javascript
You might like
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php记录日志的实现代码
2011/08/08 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
JS控制表格隔行变色
2006/06/26 Javascript
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
python为什么要安装到c盘
2020/07/20 Python
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
Shell如何接收变量输入
2016/08/06 面试题
大学生个人推荐信范文
2013/11/25 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js