weixin_49819397 2021-08-01 18:31 采纳率: 0%
浏览 32

nodejs+mongodb并发导致数据库端口占用


const scheduleCronstyle1 = () => {    schedule.scheduleJob('* * * * * *', () => {        var user = []        var task0 = function (callback) {            model.connect(function (db) {                db.collection('users').find({                    "idcode": "1"                }, {                    "batchSize": 150                }).toArray(function (err, docs) {                    if (err) {                        callback(null, "err")                    } else {                        user = docs                        callback(null, "success")                    }                })            })        }        var task1 = function (params) {            if ((params === "success") && (user.length > 0)) {                for (let a = 0; a < user.length; a++) {                    let money = 0,                        money1 = 0,                        money2 = 0,                        money3 = 0                    //初始资金                    function ini_money() {                        return new Promise((resolve, reject) => {                            model.connect(function (db) {                                db.collection(user[a]['username']).find({                                    "name": "ini_money"                                }).toArray(function (err, docs) {                                    if (err) {                                        reject(err)                                    } else {                                        money1 = docs[0]['money']                                        resolve(money1)                                    }                                })                            })                        })                    }                    // 计算收入                    function plus_money(res) {                        return new Promise((resolve, reject) => {                            model.connect(function (db) {                                db.collection('contract').find({                                    $or: [{                                        "payee": user[a]['username'],                                        "status": "success",                                        competition: user[a]['competition']                                    }, {                                        "payee": user[a]['username'],                                        "status": "transporting",                                        competition: user[a]['competition']                                    }, {                                        "payee": user[a]['username'],                                        "status": "abnormal",                                        competition: user[a]['competition']                                    }, {                                        "payee": user[a]['username'],                                        "status": "doing",                                        competition: user[a]['competition']                                    }, {                                        "payee": user[a]['username'],                                        "status": "overdue",                                        competition: user[a]['competition']                                    }, {                                        "contract_type": "贷款",                                        "payee": user[a]['username'],                                        "status": "default",                                        competition: user[a]['competition']                                    }]                                }, {                                    "batchSize": 500                                }).toArray(function (err, docs) {                                    if (err) {                                        reject(err)                                    } else {                                        if (docs.length > 0) {                                            for (let i = 0; i < docs.length; i++) {                                                money2 += docs[i]['money']                                                if (i === docs.length - 1) {                                                    resolve(res + money2)                                                }                                            }                                        } else {                                            money2 = 0                                            resolve(res)                                        }                                    }                                })                            })                        })                    }                    // 计算支出                    function reduce_money(res) {                        return new Promise((resolve, reject) => {                            model.connect(function (db) {                                db.collection('contract').find({                                    $or: [{                                        "payer": user[a]['username'],                                        "status": "success",                                        competition: user[a]['competition']                                    }, {                                        "payer": user[a]['username'],                                        "status": "doing",                                        competition: user[a]['competition']                                    }, {                                        "payer": user[a]['username'],                                        "status": "transporting",                                        competition: user[a]['competition']                                    }, {                                        "payer": user[a]['username'],                                        "status": "abnormal",                                        competition: user[a]['competition']                                    }]                                }, {                                    "batchSize": 500                                }).toArray(function (err, docs) {                                    if (err) {                                        reject(err)                                    } else {                                        if (docs.length > 0) {                                            for (let i = 0; i < docs.length; i++) {                                                money3 += docs[i]['money']                                                if (i === docs.length - 1) {                                                    resolve(res - money3)                                                }                                            }                                        } else {                                            money3 = 0                                            resolve(res)                                        }                                    }                                })                            })                        })                    }                    //计算总资产                    function total(res) {                        return new Promise((resolve, reject) => {                            model.connect(function (db) {                                db.collection(user[a]['username']).find({                                    "name": "product_name"                                }).toArray(function (err, docs) {                                    if (err) {                                        reject(err)                                    } else {                                        if (docs.length === 0) {                                            resolve(res + "," + 0)                                        } else {                                            for (let i = 0; i < docs.length; i++) {                                                money += docs[i]['number'] * docs[i]['cost']                                                if (i === docs.length - 1) {                                                    resolve(res + ',' + money)                                                }                                            }                                        }                                    }                                })                            })                        })                    }                    //更新用户数据                    function update_username(res) {                        return new Promise((resolve, reject) => {                            model.connect(function (db) {                                db.collection(user[a]['username']).updateOne({                                    "name": "money"                                }, {                                    $set: {                                        "money": Number(res.split(",")[0]),                                        "total": Number(res.split(",")[0]) + Number(res.split(",")[1])                                    }                                }, {                                    upsert: true                                }, function (err, ret) {                                    if (err) {                                        reject(err)                                    } else {                                        resolve(res)                                    }                                })                            })                        })                    }                    //更新管理员数据                    function update_users(res) {                        return new Promise((resolve, reject) => {                            model.connect(function (db) {                                db.collection('users').updateOne({                                    "username": user[a]['username'],                                    competition: user[a]['competition']                                }, {                                    $set: {                                        "money": Number(res.split(",")[0]),                                        "total": Number(res.split(",")[0]) + Number(res.split(",")[1])                                    }                                }, {                                    upsert: true                                }, function (err, ret) {                                    if (err) {                                        reject(err)                                    } else {                                        resolve(Number(res.split(",")[0]) + Number(res.split(",")[1]))                                    }                                })                            })                        })                    }                    //更新贷款                    function loan1(res) {                        return new Promise((resolve, reject) => {                            model.connect(function (db) {                                db.collection('contract').find({                                    $or: [{                                        "loan_status": "doing",                                        competition: user[a]['competition'],                                        contract_type: "贷款",                                        payee: user[a]['username']                                    }, {                                        "loan_status": "overdue",                                        competition: user[a]['competition'],                                        contract_type: "贷款",                                        payee: user[a]['username']                                    }]                                }).toArray(function (err, docs) {                                    if (err) {                                        reject(err)                                    } else {                                        if (docs.length === 0) {                                            loan = 0                                            resolve(loan)                                        } else {                                            for (let i = 0; i < docs.length; i++) {                                                loan += docs[i]['l_money']                                                if (i === docs.length - 1) {                                                    resolve(loan + "," + res)                                                }                                            }                                        }                                    }                                })                            })                        })                    }                    function reloan(res) {                        return new Promise((resolve, reject) => {                            res = res.toString()                            var relt = res.split(",")                            if ((relt[0] == 0) || (relt[1] == 0)) {                                model.connect(function (db) {                                    db.collection('users').updateOne({                                        "username": user[a]['username'],                                        competition: user[a]['competition']                                    }, {                                        $set: {                                            "loan": relt[0],                                            "rel": 0 + "%"                                        }                                    }, {                                        upsert: true                                    }, function (err) {                                        if (err) {                                            reject(err)                                        } else {                                            resolve()                                        }                                    })                                })                            } else {                                model.connect(function (db) {                                    db.collection('users').updateOne({                                        "username": user[a]['username'],                                        competition: user[a]['competition']                                    }, {                                        $set: {                                            "loan": relt[0],                                            "rel": (relt[0] * 100 / relt[1]).toFixed(2) + "%"                                        }                                    }, {                                        upsert: true                                    }, function (err) {                                        if (err) {                                            reject(err)                                        } else {                                            resolve()                                        }                                    })                                })                            }                        })                    }                    ini_money()                        .then((res) => {                            return plus_money(res)                        })                        .then((res) => {                            return reduce_money(res)                        })                        .then((res) => {                            return total(res)                        })                        .then((res) => {                            return update_username(res)                        })                        .then((res) => {                            return update_users(res)                        })                        .then((res) => {                            return reloan(res)                        })                        .then((res) => {                            return loan1(res)                        })                        .catch((err) => {                            console.log(err)                        })                }            }        }        async.waterfall([task0, task1], function (err, result) {            if (err) {                console.log(err)            } else {                console.log(result)            }        })    });}scheduleCronstyle1();
  • 写回答

1条回答 默认 最新

  • CSDN专家-Time 2021-08-01 18:32
    关注

    把mongodb的端口改掉就行了。
    或者把node.js的端口改掉

    评论

报告相同问题?

问题事件

  • 修改了问题 8月1日
  • 修改了问题 8月1日
  • 修改了问题 8月1日
  • 创建了问题 8月1日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?