import-data.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // import-data.js
  2. const { CloudQuery, CloudObject } = require("../lib/ncloud");
  3. const { DepartList, DoctorList, HotDotList, DrugList } = require("./data");
  4. inportDapartAndDoctor();
  5. DataMap = {
  6. Doctor: {},
  7. Department: {},
  8. HotDot: {},
  9. Drug: {},
  10. };
  11. async function inportDapartAndDoctor() {
  12. 导入药品数据
  13. let drugList = DrugList;
  14. for (let index = 0; index < drugList.length; index++) {
  15. let drug = drugList[index];
  16. drug = await importObject("Drug", drug);
  17. }
  18. //如果需要导入其他数据(科室、医生、热点),可以取消注释以下代码
  19. // 导入科室数据
  20. let departList = DepartList;
  21. for (let index = 0; index < departList.length; index++) {
  22. let depart = departList[index];
  23. depart = await importObject("Department", depart);
  24. }
  25. // 导入医生数据
  26. let doctorList = DoctorList;
  27. for (let index = 0; index < doctorList.length; index++) {
  28. let doctor = doctorList[index];
  29. doctor = await importObject("Doctor", doctor);
  30. }
  31. 导入热点数据
  32. let hotDotList = HotDotList;
  33. for (let index = 0; index < hotDotList.length; index++) {
  34. let hotDot = hotDotList[index];
  35. hotDot = await importObject("HotDot", hotDot);
  36. }
  37. console.log("药品数据导入完成");
  38. }
  39. async function importObject(className, data) {
  40. // 查重 srcId 数据源列表中的objectId并非数据库生成的唯一ID,因此需要有一个srcId字段进行记录,并查重
  41. let query = new CloudQuery(className);
  42. let srcId = data.objectId;
  43. query.equalTo("srcId", srcId);
  44. let importObj = await query.first();
  45. console.log(importObj);
  46. // 导入前批量处理Pointer类型数据,进行重定向
  47. Object.keys(data)?.forEach(key => {
  48. let field = data[key];
  49. let srcId = field?.objectId;
  50. if (srcId) { // 是 Pointer 类型字段
  51. if (key === "depart") {
  52. data[key] = DataMap["Department"]?.[srcId]?.toPointer();
  53. }
  54. // 如果有其他 Pointer 类型的字段,可以在这里处理
  55. }
  56. });
  57. // 若未添加,则创建新对象并保存
  58. if (!importObj?.id) {
  59. importObj = new CloudObject(className);
  60. }
  61. // 保存或更新数据
  62. data.srcId = srcId;
  63. importObj.set(data);
  64. importObj = await importObj.save();
  65. DataMap[className][srcId] = importObj;
  66. }