// const { MongoClient } = require('mongodb'); var express = require('express'); var router = express.Router(); const querystring = require('querystring'); var us = { mongo: require('mongodb'), client: null // 用于存储 MongoClient 实例 }; // 初始化 MongoDB 连接 us.initMongoConnection = async function (host, database) { if (!us.client) { const url = host; // MongoDB 连接地址 us.client = new us.mongo.MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true, maxPoolSize: 10000, // 设置连接池没有上限 serverSelectionTimeoutMS: 5000, // 服务器选择超时 socketTimeoutMS: 45000 // 套接字超时 }); try { await us.client.connect(); } catch (err) { console.error("MongoDB 连接失败", err); throw err; // 抛出错误以便调用者处理 } } return us.client.db(database); // 返回数据库实例 } async function updateUserData(host, database, cename, data, res) { const db = await us.initMongoConnection(host, database); // 连接数据库 try { const collection = db.collection(cename); // collection设置 const dateKey = Object.keys(data)[0]; // 获取日期键 const username = Object.keys(data[dateKey])[0]; // 获取用户ID console.log(`更新用户数据:${username}`); // 使用 upsert 更新或插入文档 await collection.updateOne( { [dateKey]: { $exists: true }, [`${dateKey}.${username}`]: { $exists: true } }, // 查询条件 { $push: { [`${dateKey}.${username}`]: data[dateKey][username] }, // 将用户数据推入数组 }, { upsert: true } // 如果没有数据,默认创建一条数据 ); console.log('数据更新成功'); res.end(JSON.stringify({ status: "1" })) } catch (err) { res.end(JSON.stringify({ status: "0" })) console.error('更新失败', err); } } /* // 示例调用 updateUserData("mongodb://root:usestudio-1@123.58.32.151:11641?authSource=admin", "cocolog", "applog", { "2025-03-24": { "username": { userid: "", date: "", appname: "", status: "" } } }); */ //查找有无学校 router.route('/updateUserData').all((req, res, next) => { // var json = queryString(req.url); let accountNumber = encodeURIComponent(req.body[0].accountNumber) let today = new Date(); let date = today.getFullYear() + '-' + (today.getMonth() + 1).toString().padStart(2, '0') + '-' + today.getDate().toString().padStart(2, '0'); // mongodb://root:usestudio-1@123.58.32.151:11641?authSource=admin updateUserData("mongodb://root:usestudio-1@172.16.9.240:27017?authSource=admin", "cocolog", "applog", { [date]: { [accountNumber]: // 使用变量username作为键 { userid: req.body[0].userid, username: req.body[0].username, date: today, appname: req.body[0].appname, appid: req.body[0].appid, status: req.body[0].status } } }, res); // console.log(json); // res.end(JSON.stringify([{ status: "0" }])); }); queryString = function (url) { var a = url.split("?"); var json = querystring.parse(a[1]) return json; } module.exports = router;