zoukankan      html  css  js  c++  java
  • 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);
    

      

  • 相关阅读:
    [算法学习] 单调栈
    UVA11275 3D Triangles(三维几何)
    2019CCSU11月校赛 B,G题解
    2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17)(B,D)
    2016湖南省省赛 B 有向无环图(树形dp)
    2016湖南省省赛 J 三角形和矩形(计算几何)
    JAVA 高精度小数模板
    2019湖南省赛 K 双向链表练习题(list)
    2019 字节跳动 [编程题]最大映射(贪心)
    HDU 6740 MUV LUV EXTRA(kmp原理)
  • 原文地址:https://www.cnblogs.com/mxh-java/p/11535688.html
Copyright © 2011-2022 走看看