import-data.js 1.7 KB

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