// import-data.js const { CloudQuery, CloudObject } = require("../lib/ncloud"); const { DepartList, DoctorList, HotDotList, DrugList } = require("./data"); inportDapartAndDoctor(); DataMap = { Doctor: {}, Department: {}, HotDot: {}, Drug: {}, }; async function inportDapartAndDoctor() { 导入药品数据 let drugList = DrugList; for (let index = 0; index < drugList.length; index++) { let drug = drugList[index]; drug = await importObject("Drug", drug); } //如果需要导入其他数据(科室、医生、热点),可以取消注释以下代码 // 导入科室数据 let departList = DepartList; for (let index = 0; index < departList.length; index++) { let depart = departList[index]; depart = await importObject("Department", depart); } // 导入医生数据 let doctorList = DoctorList; for (let index = 0; index < doctorList.length; index++) { let doctor = doctorList[index]; doctor = await importObject("Doctor", doctor); } 导入热点数据 let hotDotList = HotDotList; for (let index = 0; index < hotDotList.length; index++) { let hotDot = hotDotList[index]; hotDot = await importObject("HotDot", hotDot); } console.log("药品数据导入完成"); } async function importObject(className, data) { // 查重 srcId 数据源列表中的objectId并非数据库生成的唯一ID,因此需要有一个srcId字段进行记录,并查重 let query = new CloudQuery(className); let srcId = data.objectId; query.equalTo("srcId", srcId); let importObj = await query.first(); console.log(importObj); // 导入前批量处理Pointer类型数据,进行重定向 Object.keys(data)?.forEach(key => { let field = data[key]; let srcId = field?.objectId; if (srcId) { // 是 Pointer 类型字段 if (key === "depart") { data[key] = DataMap["Department"]?.[srcId]?.toPointer(); } // 如果有其他 Pointer 类型的字段,可以在这里处理 } }); // 若未添加,则创建新对象并保存 if (!importObj?.id) { importObj = new CloudObject(className); } // 保存或更新数据 data.srcId = srcId; importObj.set(data); importObj = await importObj.save(); DataMap[className][srcId] = importObj; }