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