import-data.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const { CloudQuery, CloudObject } = require("../ncloud");
  2. const { UserList, PlanList, CoachList } = require("./data");
  3. inportDapartAndDoctor()
  4. DataMap = {
  5. fitUser: {},
  6. fitPlan: {},
  7. Coach: {}
  8. }
  9. async function inportDapartAndDoctor() {
  10. // 导入科室数据
  11. let departList = CoachList
  12. for (let index = 0; index < departList.length; index++) {
  13. let depart = departList[index];
  14. depart = await importObject("Coach", depart)
  15. }
  16. // 导入医生数据
  17. // let doctorList = PlanList
  18. // for (let index = 0; index < doctorList.length; index++) {
  19. // let doctor = doctorList[index];
  20. // doctor = await importObject("fitPlan", doctor)
  21. // }
  22. // console.log(DataMap["Doctor"])
  23. }
  24. async function importObject(className, data) {
  25. // 查重 srcId 数据源列表中的objectId并非数据库生成的唯一ID,因此需要有一个srcId字段进行记录,并查重
  26. let query = new CloudQuery(className)
  27. let srcId = data.objectId
  28. query.equalTo("srcId", srcId)
  29. let importObj = await query.first()
  30. console.log(importObj)
  31. // 导入
  32. // 导入前批量处理Pointer类型数据,进行重定向
  33. Object.keys(data)?.forEach(key => {
  34. let field = data[key]
  35. let srcId = field?.objectId
  36. if (srcId) { // 是数组字段
  37. if (key == "depart") {
  38. data[key] = DataMap?.["Department"]?.[srcId]?.toPointer();
  39. }
  40. }
  41. })
  42. // 若未添加,则创建新对象并保存
  43. if (!importObj?.id) {
  44. importObj = new CloudObject(className)
  45. }
  46. // 保存或更新数据
  47. data.srcId = srcId;
  48. importObj.set(data);
  49. importObj = await importObj.save();
  50. DataMap[className][srcId] = importObj
  51. }