import-data.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const { CloudQuery, CloudObject } = require("../lib/ncloud");
  2. const { UserProfileList, UserInputList,AIRecommendationList, PerferList } = require("./data");
  3. importData()
  4. DataMap = {
  5. UserProfile:{},
  6. UserInput:{},
  7. AIRecommendation:{},
  8. PerferList:{}
  9. }
  10. async function importData(){
  11. // 导入用户数据
  12. //let userProfileList = UserProfileList
  13. //for (let index = 0; index < userProfileList.length; index++) {
  14. //let userProfile = userProfileList[index];
  15. // userProfile = await importObject("UserProfile",userProfile)
  16. //}
  17. //导入用户输入数据
  18. // let userInputList = UserInputList
  19. // for (let index = 0; index < userInputList.length; index++) {
  20. // let userInput = userInputList[index];
  21. // userInput = await importObject("UserInput",userInput)
  22. // }
  23. //导入AI生成数据
  24. // let aiRecommendationList = AIRecommendationList
  25. // for (let index = 0; index < aiRecommendationList.length; index++) {
  26. // let aiRecommendation = aiRecommendationList[index];
  27. // aiRecommendation = await importObject("AIRecommendation",aiRecommendation)
  28. // }
  29. //导入偏好数据
  30. let perferList = PerferList
  31. for (let index = 0; index < perferList.length; index++) {
  32. let perfer = perferList[index];
  33. perfer = await importObject("Perfer",perfer)
  34. }
  35. console.log(DataMap)
  36. }
  37. async function importObject(className,data){
  38. // 查重 srcId 数据源列表中的objectId并非数据库生成的唯一ID,因此需要有一个srcId字段进行记录,并查重
  39. let query = new CloudQuery(className)
  40. let srcId = data.objectId
  41. query.equalTo("srcId",srcId)
  42. let importObj = await query.first()
  43. // 导入
  44. // 导入前批量处理Pointer类型数据,进行重定向
  45. Object.keys(data)?.forEach(key=>{
  46. let field = data[key]
  47. let srcId = field?.objectId
  48. if(srcId){ // 是数组字段
  49. if(key=="user"){
  50. data[key] = DataMap?.["UserProfile"]?.[srcId]?.toPointer();
  51. }
  52. if(key=="userInput"){
  53. data[key] = DataMap?.["UserInput"]?.[srcId]?.toPointer();
  54. }
  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. }