Node.Js同步mongdb数据

var objectId = require('mongodb').ObjectId;
const mongoose = require("mongoose");
var SchemaObj = mongoose.Schema;
DB_URL = "mongodb://localhost:27017/admin";

mongoose.connect(DB_URL); //创建链接

/*
 * 连接成功
 */
mongoose.connection.on("connected", () => {
    console.log("数据库连接成功!");
});

/**
 * 连接异常
 */
mongoose.connection.on("error", err => {
    console.log("数据库连接失败!" + err);
});

/**
 * 连接断开
 */
mongoose.connection.on("disconnected", () => {
    console.log("数据库连接中断!");
});

const UserSchema = new SchemaObj({
  name: {
    type: String,
    required: true
  },
  password: {
    type: String,
    required: true
  },
  avatar: {
    type: String
  },
  type:{
    type: String,
    required: true
  },
  date: {
    type: Date,
    default: Date.now
  }
});
const User = mongoose.model("users", UserSchema);

const UserDataSchema = new SchemaObj({
  name: {
    type: String,
    required: true
  },
  password: {
    type: String,
    required: true
  },
  avatar: {
    type: String
  },
  type:{
    type: String,
    required: true
  },
  date: {
    type: Date,
    default: Date.now
  }
});
const UserData = mongoose.model("userData", UserDataSchema);

let query = User.find({});
let pageSize = 2; //查询数量
let pageCount = 1; //查询页码
let insertFlag = true; //是否添加数据

let setTime = setInterval(() => {
    let startPage = (pageCount - 1) * pageSize; //开始条数
    query.limit(pageSize); //设置查询条数
    query.skip(startPage); //开始条数
    console.log("pageSize", pageSize, "startPage", startPage, "pageCount", pageCount)
    pageCount += 1;
    query.exec((err, data) => {
        if (err) throw err;
        if (data.length < pageSize) {
            console.log('close');
            clearInterval(setTime);
        }
        for (var i = 0; i < data.length; i++) {
            const userData = new UserData({
                _id: data[i]._id,
                name: data[i].name,
                password: data[i].password,
                type: data[i].type,
                avatar: data[i].avatar,
                date: data[i].date
            });
            //去除重复数据
            UserData.findOne({
                    _id: objectId(data[i]._id)
                },
                function (err, doc) {
                    if (err) throw err;
                    if (doc != null) {
                        insertFlag = false;
                    }
                }
            );
            if (insertFlag) {
                userData
                    .save()
					.then('同步数据: ' + JSON.stringify(userData))
                    .catch(err => console.log(err));
            }
        }
    });
}, 1000);

  

原文地址:https://www.cnblogs.com/mxh-java/p/11535688.html