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. // 导入科室数据
  21. let departList = DepartList;
  22. for (let index = 0; index < departList.length; index++) {
  23. let depart = departList[index];
  24. depart = await importObject("Department", depart);
  25. }
  26. // 导入医生数据
  27. let doctorList = DoctorList;
  28. for (let index = 0; index < doctorList.length; index++) {
  29. let doctor = doctorList[index];
  30. doctor = await importObject("Doctor", doctor);
  31. }
  32. // 导入热点数据
  33. let hotDotList = HotDotList;
  34. for (let index = 0; index < hotDotList.length; index++) {
  35. let hotDot = hotDotList[index];
  36. hotDot = await importObject("HotDot", hotDot);
  37. }
  38. */
  39. console.log("药品数据导入完成");
  40. }
  41. async function importObject(className, data) {
  42. // 查重 srcId 数据源列表中的objectId并非数据库生成的唯一ID,因此需要有一个srcId字段进行记录,并查重
  43. let query = new CloudQuery(className);
  44. let srcId = data.objectId;
  45. query.equalTo("srcId", srcId);
  46. let importObj = await query.first();
  47. console.log(importObj);
  48. // 导入前批量处理Pointer类型数据,进行重定向
  49. Object.keys(data)?.forEach(key => {
  50. let field = data[key];
  51. let srcId = field?.objectId;
  52. if (srcId) { // 是 Pointer 类型字段
  53. if (key === "depart") {
  54. data[key] = DataMap["Department"]?.[srcId]?.toPointer();
  55. }
  56. // 如果有其他 Pointer 类型的字段,可以在这里处理
  57. }
  58. });
  59. // 若未添加,则创建新对象并保存
  60. if (!importObj?.id) {
  61. importObj = new CloudObject(className);
  62. }
  63. // 保存或更新数据
  64. data.srcId = srcId;
  65. importObj.set(data);
  66. importObj = await importObj.save();
  67. DataMap[className][srcId] = importObj;
  68. }